2009-07-16 30 views
8

Đối với phần mềm trung gian hướng tin nhắn không nhất quán hỗ trợ các thông điệp ưu tiên (chẳng hạn như AMQP) cách tốt nhất để thực hiện mức ưu tiên là gì khi hàng đợi chỉ có ngữ nghĩa FIFO ? Trường hợp sử dụng chung sẽ là một hệ thống trong đó người tiêu dùng nhận được các thông điệp có mức độ ưu tiên cao hơn trước các thông báo có mức độ ưu tiên thấp hơn khi một lượng lớn các thông điệp tồn tại trong Hàng đợi.Trong hệ thống Qeueing FIFO, cách tốt nhất để thực hiện ưu tiên nhắn tin

+2

Bạn có thể có nhiều hàng đợi không? Nếu vậy tôi sẽ đề nghị có một hàng đợi riêng biệt cho các thông điệp ưu tiên cao được truy vấn trước trước hàng đợi tiêu chuẩn, mà chỉ được sử dụng nếu hàng đợi ưu tiên trống. Tôi không biết điều đó có phù hợp với kịch bản của bạn hay không nhưng đó là ý tưởng đầu tiên của tôi. – CodeFusionMobile

+0

Tôi đồng ý với CSharpWithJava. Tôi đang làm một ứng dụng nhắn tin lớn vào lúc này, và tôi nghĩ từ các câu hỏi của bạn, bạn cần nhiều hàng đợi, vì vậy bạn có thể giảm bớt các thông điệp pri thấp hơn xuống hàng đợi pri thấp hơn và đọc ngay pri cao. –

Trả lời

10

Chỉ được hỗ trợ FIFO cho một hàng đợi nhất định, tất nhiên bạn sẽ phải giới thiệu nhiều hàng đợi, trung gian hoặc có người tiêu dùng phức tạp hơn.

Nhiều hàng đợi có thể được xử lý theo một vài cách. Nhà sản xuất và người tiêu dùng có thể đồng ý có hai hàng đợi giữa chúng, một cho ưu tiên cao và một cho các tác vụ nền.

Nếu nhà sản xuất của bạn bị ràng buộc vào một hàng đợi duy nhất, nhưng bạn có quyền kiểm soát người tiêu dùng, hãy xem xét giới thiệu bộ định tuyến người hâm mộ trong đường dẫn. Vì vậy, nhà sản xuất-> Router là một hàng đợi duy nhất, và router sau đó có hai hàng đợi cho người tiêu dùng.

Một cách khác để giải quyết nó, có khả năng ít hơn lý tưởng, sẽ khiến người tiêu dùng quay một sợi chỉ trước hàng đợi, sau đó gửi công việc nội bộ. Một cái gì đó giống như phiên bản router ở trên, nhưng bên trong một ứng dụng duy nhất. Điều này có nhược điểm là có nhiều thư trong chuyến bay bên trong ứng dụng của bạn, điều này có thể làm phức tạp việc khôi phục trong trường hợp không thành công.

Đừng quên xem xét sự đói kém của các sự kiện có mức độ ưu tiên thấp, bất kể chúng là gì, nếu một số trong số chúng cần được xử lý ngay cả khi có sự kiện có mức ưu tiên cao hơn vẫn bị treo.

+1

Đây là chính xác hơn hoặc ít hơn những người chúng tôi đã thực hiện chiến lược này cho một dự án tại nơi làm việc. Nhiều hàng đợi cho một hệ thống ưu tiên được xếp loại. Chúng tôi không lo lắng nhiều về nạn đói vì chúng tôi chỉ có thể tái xuất bản các thư có mức ưu tiên thấp hơn quan trọng với ưu tiên cao hơn trong các trường hợp như vậy; công việc dư thừa được xử lý, cho hầu hết các phần, idempotently để cho phép điều này. – quaternion

Các vấn đề liên quan