2011-09-07 18 views
8

Nếu tôi đang xây dựng một hệ thống với hàng chục nhà xuất bản/thuê bao sử dụng hàng đợi tin nhắn, có vẻ như tôi có một vài tùy chọn cấu hình mạng:địa phương so với hàng đợi từ xa trong pub/sub nhắn

  1. tôi có thể có một nhóm môi giới mà tất cả các máy sử dụng - mỗi máy sẽ không có một hàng đợi địa phương
  2. tôi có thể cài đặt môi giới cục bộ trên mỗi máy, và sử dụng store-and-forward để gửi tin nhắn cho các máy từ xa

công nghệ khác nhau dường như thực thi cấu hình khác nhau - ví dụ, MS MQ yêu cầu mọi máy có hàng đợi địa phương riêng, trong khi Tibco EMS dường như thường được sử dụng trong các cụm, không có hàng đợi cục bộ trên mỗi người tiêu dùng.

Những nhược điểm không có hàng đợi địa phương là gì và yếu tố nào ảnh hưởng đến quyết định?

Trả lời

5

Không có hàng đợi cục bộ cung cấp cửa hàng tin nhắn bền có nghĩa là bạn không thể đảm bảo việc gửi tin nhắn. Sử dụng một cái gì đó như RabbitMQ trong một cụm với một môi giới dụ tại địa phương cung cấp cho bạn một cơ chế bền để lưu trữ tin nhắn để giao hàng. Nếu bạn phải kết nối qua kết nối mạng với một nhà môi giới từ xa để gửi tin nhắn bền, bạn có nguy cơ bị lỗi mạng cao hơn.

MSMQ cũng lưu trữ và chuyển tiếp, nhưng nó không cung cấp bất kỳ khả năng định tuyến nhóm nào. Điều này có nghĩa là ứng dụng phải thực hiện công việc (hoặc có một lớp trên đầu trang của nó, chẳng hạn như MassTransit hoặc NServiceBus làm điều đó cho bạn).

Khi tôi nghĩ về TIBCO, tôi nghĩ về một cụm máy chủ EMS tập trung mà các máy chủ ứng dụng truyền thông thay vì chạy một cá thể môi giới cục bộ. Các công cụ GUI bao quanh EMS và các máy chủ ứng dụng BusinessWorks thực sự buộc một mô hình trong thế giới đó.

Trong bất kỳ trường hợp phân phối nào được lưu trữ cục bộ, điều quan trọng là đảm bảo máy được trang bị đúng cách để lưu trữ thư, với đĩa nhanh và đủ dung lượng lưu trữ/công suất dự kiến.

+0

TIBCO EMS hỗ trợ định tuyến giữa các nhà môi giới cho phép cả máy chủ cục bộ và tập trung. Tuy nhiên, thiết lập phổ biến nhất là cụm tập trung. Ngoài ra, các trường hợp địa phương có thể phải trả phí giấy phép cao hơn. – stoft

3

Tôi sẽ mạo hiểm hàng đợi địa phương là cần thiết trong hầu hết các trường hợp.

Hàng đợi cục bộ là cần thiết nếu thư cần phải bền. Nói cách khác, nếu kết nối đến hàng đợi từ xa không đáng tin cậy và bạn muốn thông báo cuối cùng tiếp cận người đăng ký, bạn sẽ muốn khả năng lưu trữ và chuyển tiếp của hàng đợi địa phương.

Nếu thư không cần phải bền (có thể bị mất sau khi kích hoạt sự kiện), thì hàng đợi được chia sẻ từ xa sẽ là một tùy chọn.

Bạn có thể muốn xem NServiceBus distributor model, đây sẽ là sự kết hợp của hai trường hợp của bạn: hàng đợi cục bộ trên mỗi máy để chuyển tiếp tới cụm nhà môi giới/phân phối từ xa.

2

Tôi không chắc mình đồng ý với các nhận xét về MSMQ khi chúng có vẻ lỗi thời. Có lẽ tôi đang thiếu một cái gì đó.

Cả hai kịch bản đều được hỗ trợ trong MSMQ.

Trong trường hợp 1, khách hàng sẽ sử dụng Giao dịch nhận từ xa (MSMQ 4.0 trở lên). Là giao dịch, nhận được tin cậy và tin nhắn bền (không giống như các phiên bản trước của MSMQ như bị hủy bỏ nhận được để lại tin nhắn trên máy chủ).

Trong trường hợp 2, hàng đợi gửi đi và chuyển tiếp sẽ gửi đến hàng đợi giao dịch cục bộ trên máy khách (một lần nữa đáng tin cậy và bền).

Độ tin cậy và độ bền không nên là điểm quyết định cho việc sử dụng hàng đợi cục bộ và từ xa. Peformance là sự khác biệt ở đây cho MSMQ.