2011-09-13 25 views
13

Chúng tôi đang bắt đầu một dự án mới có một số yêu cầu nhắn tin và xếp hàng khá cơ bản, nhưng trong tương lai có thể có một số yêu cầu bổ sung cho những thứ như sagas ra khỏi trật tự và cần phải được resequenced.Sử dụng NServiceBus trong ứng dụng Amazon EC2 được lưu trữ

Gần đây, chúng tôi đã phát hành một dự án được lưu trữ hoàn toàn trên Amazon EC2 cũng có một hệ thống nhắn tin đơn giản trong đó. Chúng tôi có một quán rượu/cơ chế phụ rất đơn giản, theo đó chúng tôi nhận được một tin nhắn và sau đó tìm ra trình xử lý nào sử dụng cho thông điệp dựa trên loại của nó. Trong dự án mới của chúng tôi, chúng tôi cũng có một cơ chế tương tự và có thể có một số yêu cầu phức tạp hơn một chút, nhưng ngay cả khi chúng tôi có thể loại bỏ mã riêng của chúng tôi để giải quyết các trình xử lý tin nhắn, điều này cũng sẽ rất tuyệt.

Chúng tôi thực sự muốn sử dụng NServiceBus vì mô hình pub/sub thực sự tốt đẹp, nhưng cho đến bây giờ chúng tôi đã sử dụng SQS của Amazon làm nhà cung cấp hàng đợi. Mỗi máy EC2 của chúng tôi có một nhân viên đang lắng nghe cùng một hàng đợi SQS và kéo các thông điệp ra khỏi đó để xử lý chúng. Rõ ràng SQS không được hỗ trợ như một tầng vận chuyển (và tôi biết đó là vì NServiceBus được xây dựng xung quanh một hàng đợi độ trễ đáng tin cậy và thấp) trong NServiceBus.

Tôi biết rằng NServiceBus có một nhà phân phối và tôi có thể tưởng tượng việc lưu trữ trên phiên bản EC2 của riêng mình, nhưng vấn đề là có một điểm thất bại lớn ở đó, xuống. Từ những gì tôi thu thập, mọi người thiết lập Windows failover cluster để xử lý vấn đề này cho các mạng nội bộ, nhưng tôi không biết liệu điều này có thể áp dụng cho EC2 hay không.

This là một trong những bài đăng blog duy nhất mà tôi có thể tìm thấy bởi một người thực sự đã cố gắng sử dụng NServiceBus trong ngữ cảnh dựa trên đám mây và dường như anh ấy không đề xuất nó. Tôi chỉ tự hỏi nếu có ai khác ở đây đã thử nó và nếu như vậy họ sẽ có bất cứ lời khuyên để cung cấp? Có vẻ như một sự xấu hổ như vậy mà chúng tôi sẽ không thể sử dụng một khuôn khổ tuyệt vời như vậy chỉ vì chúng tôi được lưu trữ trên đám mây. Có vẻ như có một số progress được thực hiện với Hàng đợi Azure, cái mà chúng ta có thể xem, nhưng bây giờ chúng tôi muốn giữ cơ sở hạ tầng với Amazon vì chúng tôi có rất nhiều tự động hóa xây dựng mà chúng tôi có thể sử dụng lại dựa trên đó.

Trả lời

5

Từ kinh nghiệm xếp hàng trong Amazon EC2, chúng tôi thấy SQS rất chậm chạp đối với việc nhắn tin hiệu suất cao.

Hiện tại chúng tôi không sử dụng NServiceBus làm giao diện xếp hàng nhưng tôi nghĩ rằng chúng tôi đang sử dụng thành công RabbitMQ trên các phiên bản Ubuntu trong EC2 làm nhà cung cấp hàng đợi của chúng tôi.

Theo số this post Udi Dahan suggests mọi người đã đổi chỗ MSMQ cho RabbitMQ với NServiceBus để có thể điều tra đáng giá khi sử dụng RabbitMQ trên EC2.

Có một số great guide on RabbitMQ's website mô tả cách dễ dàng để cài đặt RabbitMQ trên Amazon EC2 bằng cách khởi chạy hình ảnh Ubuntu tương thích.

Tôi rất muốn khuyên bạn nên cài đặt RabbitMQ Management Plugin cũng cung cấp cho bạn giao diện quản trị web đơn giản trên hàng đợi.

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