2012-11-29 26 views
5

Tôi muốn sử dụng khung công tác Lịch Trình Thạch Anh trong ứng dụng của tôi. Tôi gặp hai loại JobStores:Quartz Scheduler - Sự khác biệt giữa RAM và JDBC Job store

1) RAM Job Store

2) JDBC Job store.

Tôi tự hỏi trong trường hợp nào tôi phải sử dụng cửa hàng công việc nào. Và những ưu và khuyết điểm giữa chúng là gì.

Bất kỳ suy nghĩ nào về điều này thực sự hữu ích đối với tôi và tôi đánh giá cao điều đó.

Trả lời

5

cửa hàng công việc JDBC lưu thông tin về trigger bị sa thải và việc làm trong cơ sở dữ liệu, như sau:

  • nó sẽ không mất sa thải nếu ứng dụng đã xuống khi kích hoạt được cho rằng để bắn (điều này phụ thuộc vào hướng dẫn Misfire chọn)

  • bạn có thể lên lịch cụm của bạn, trong đó mỗi nút sử dụng cơ sở dữ liệu cùng

  • cửa hàng công việc JDBC là chậm hơn đáng kể

  • 012.

Lưu trữ công việc RAM chỉ áp dụng trong ứng dụng không được nhóm, trong đó việc mất quá trình kích hoạt không phải là vấn đề lớn. Nó cũng nhanh hơn nhiều. Nếu bạn muốn sử dụng Quartz với bộ nhớ RAM, rất có thể bạn không cần Quartz. Cả Spring và EJB đều cung cấp các cơ chế để chạy các công việc định kỳ, cả thời gian và CRON.

+0

Vì vậy, nếu tôi có thể duy trì chi tiết công việc trong các tệp xml thì tôi có thể đi cùng với RAMJobStore. Có đúng không? – Narendra

+0

@Narendra: nếu bạn chỉ cần lên lịch lại tất cả các công việc khi khởi động, thì có. Nhưng hãy nhớ rằng nếu kích hoạt của bạn là giả sử để chạy mỗi giờ nhưng ứng dụng của bạn đã giảm trong 3 giờ, 3 firings sẽ bị mất với lưu trữ RAM. –

+0

Cảm ơn bạn đã cho tôi biết. Bây giờ tôi hiểu nó. – Narendra

3

RAM Job Store rất nhanh, nhưng rất dễ bay hơi - công việc sẽ không tồn tại khi khởi động lại máy chủ.

Cửa hàng việc làm JDBC chậm hơn một chút, nhưng vì công việc đang ở trong kho lưu trữ lâu dài (cơ sở dữ liệu), chúng sẽ tồn tại khi khởi động lại.

Vì vậy, nếu bạn chỉ có lịch làm việc ngắn ngủi, và bạn có thể mất chúng khi máy chủ khởi động lại hoặc ứng dụng được triển khai lại, bạn có thể sử dụng RAM Job Store.

Nếu bạn cần đảm bảo rằng công việc của bạn sẽ tồn tại khi tắt/khởi động lại, thì bạn nên sử dụng kho lưu trữ công việc JDBC.