2008-08-28 27 views
21

Tôi đang làm việc trên hệ thống nhắn tin/thông báo cho các sản phẩm của mình. Yêu cầu cơ bản là:Multicasting, Messaging, ActiveMQ vs. MSMQ?

  • cháy và quên
  • bộ dai dẳng của các thông điệp, có thể cập nhật, ở lại đó cho đến khi người gửi biết để loại bỏ chúng

Các thư viện sẽ được viết bằng C#. Spring.NET vừa phát hành một mốc quan trọng được xây dựng với rất nhiều thông điệp trừu tượng, tuyệt vời - tôi có kế hoạch sử dụng nó rộng rãi. Câu hỏi cơ bản của tôi là câu hỏi của các nhà môi giới thông điệp. Kiến trúc của tôi sẽ trông giống như ứng dụng -> tin nhắn môi giới hàng đợi -> ứng dụng máy chủ lắng nghe, gửi tất cả các tin nhắn đến nơi họ cần đến, và xử lý vòng đời của những tin nhắn tồn tại lâu dài -> tin nhắn môi giới hàng đợi hoặc chủ đề -> nghe ứng dụng.

Cuối cùng, câu hỏi: Tôi nên sử dụng nhà môi giới thư nào? Tôi thiên vị về phía ActiveMQ - Chúng tôi đã sử dụng nó trên dự án cuối cùng của mình và yêu thích nó. Tôi thực sự không thể nghĩ ra một đòn tấn công nào, trừ Java là Java, và sẽ yêu cầu java được cài đặt trên một máy chủ ở đâu đó, và đó có thể là một việc khó bán cho một số người sẽ sử dụng dịch vụ này. Các tùy chọn khác mà tôi đã xem xét là MSMQ. Tôi thiên vị chống lại nó vì một lý do không rõ, và nó cũng không có vẻ hỗ trợ multicast tuyệt vời.

Có ai đã sử dụng MSMQ cho một cái gì đó như thế này không? Bất kỳ ưu hoặc nhược điểm nào, những thứ có thể ảnh hưởng đến bầu cử theo cách này hay cách khác?

Một điều cuối cùng, chúng tôi đang sử dụng .NET 2.0.

Trả lời

22

tôi là kinda thiên vị như tôi làm việc trên ActiveMQ nhưng khá nhiều tất cả các lợi ích được liệt kê cho MSMQ trên cũng áp dụng đối với ActiveMQ thực sự.

Một số lợi ích hơn về ActiveMQ bao gồm

Nhược điểm chính bạn đề cập đến là rằng môi giới ActiveMQ được viết bằng Java; nhưng bạn có thể chạy nó trên IKVM như một assembly .net nếu bạn thực sự muốn - hoặc chạy nó như một dịch vụ windows, hoặc biên dịch nó thành một DLL/EXE thông qua GCJ. MSMQ có thể hoặc có thể không được viết bằng .NET - nhưng nó không thực sự quan trọng nhiều như thế nào được thực hiện đúng không?

Bất kể bạn chọn MSMQ hay ActiveMQ tôi khuyên bạn nên xem xét sử dụng NMS API như bạn nói được tích hợp tuyệt vời vào Spring.NET. Có một triển khai MSMQ của API này cũng như việc triển khai cho TibCo, ActiveMQ và STOMP sẽ hỗ trợ bất kỳ nhà cung cấp JMS nào khác thông qua StompConnect. Vì vậy, bằng cách chọn NMS làm API của bạn, bạn sẽ tránh khóa vào bất kỳ công nghệ độc quyền nào - và sau đó bạn có thể dễ dàng chuyển đổi nhà cung cấp dịch vụ nhắn tin tại bất kỳ thời điểm nào; thay vì khóa mã của bạn thành một API độc quyền

13

Ưu điểm cho MSMQ.

  • Nó được xây dựng vào Windows
  • Nó hỗ trợ các giao dịch, nó cũng hỗ trợ hàng đợi không có giao dịch
  • Nó là rất dễ dàng để thiết lập
  • Tích hợp AD
  • Đó là nhanh chóng, nhưng bạn sẽ cần để so sánh ActiveMQ và MSMQ cho lưu lượng truy cập của bạn để biết lưu lượng truy cập nhanh hơn.
  • NET hỗ trợ nó Chúa giáng sinh
  • Hỗ trợ lửa và quên
  • Bạn có thể peek tại hàng đợi, nếu bạn có độc giả mà chỉ cần nhìn. không chắc chắn nếu bạn có thể chỉnh sửa một tin nhắn trong hàng đợi.

Nhược điểm:

  • 4MB kích thước tin nhắn giới hạn
  • kích thước giới hạn
  • 2GB Queue
  • mục Queue được tổ chức trên đĩa
  • Không phải là một sản phẩm chủ đạo MS, tài liệu là một chút iffy, hoặc đã được một vài năm kể từ khi tôi sử dụng nó.

Dưới đây là một blog tốt cho MSMQ

+0

MSMQ: Các mục trong hàng đợi chỉ được lưu trên đĩa nếu bạn đang sử dụng các tin nhắn có độ bền cao. Tôi sẽ giả định như vậy cho ActiveMQ. –

3

Tôi khuyên bạn nên xem TIBCO Enterprise Messaging Service - EMS, một sản phẩm nhắn tin hiệu suất cao hỗ trợ định tuyến, định tuyến, hỗ trợ đặc tả JMS và các yêu cầu của bạn như vậy là không bị cháy và thông điệp liên tục sử dụng tệp/cơ sở dữ liệu sử dụng trạng thái chia sẻ.

Để tham khảo, FEDEX chạy trên cơ sở hạ tầng tin nhắn của TIBCO EMS .

http://www.tibco.com/software/messaging/enterprise_messaging_service/default.jsp

Có rất nhiều tài liệu tham khảo khác nếu tôi cung cấp, bạn sẽ thực sự ngạc nhiên.

3

Có rất nhiều tùy chọn trong đấu trường đó ...

Miễn phí: MantaRay ngang hàng với hệ thống tuân thủ đầy đủ JMS. Phần thú vị của Mantaray là bạn chỉ cần xác định vị trí tin nhắn đi và MantaRay định tuyến nó theo bất kỳ cách nào để nhận được thông điệp của bạn để nó bị chặn - vì vậy nó có khả năng chống lại sự thất bại của các nút riêng lẻ trong vải nhắn tin của bạn.

Trả tiền: Tại công việc ban ngày của tôi, tôi quản lý một hệ thống nhắn tin WebSphere MQ của IBM với hàng trăm nút và thấy nó rất tốt. Gần đây chúng tôi cũng đã mua Tibco EMS và có vẻ như nó sẽ rất đẹp để sử dụng.

Paul/

7

Hãy xem zeromq. Đó là một trong những hàng đợi tin nhắn nhanh nhất xung quanh.