2011-09-12 17 views
11

Yêu cầu của chúng tôi rất đơn giản. Gửi tin nhắn cho người dùng đã đăng ký một chủ đề. Chúng tôi cần hệ thống nhắn tin của chúng tôi để có thể hỗ trợ hàng triệu chủ đề và có thể hàng triệu người đăng ký cho bất kỳ chủ đề cụ thể nào trong thời gian thực gần. Ứng dụng của chúng tôi được xây dựng bằng Java.Sử dụng Redis cho Pub Sub. Ưu điểm/Nhược điểm trên RabbitMQ

Chúng tôi gần như đã quyết định về RabbitMQ vì hỗ trợ cộng đồng, tài liệu và tính năng (có thể nó sẽ cung cấp mọi thứ chúng tôi cần). Nhưng tôi rất nghiêng về việc sử dụng Redis vì nó trông đầy hứa hẹn và nhẹ. Thành thật mà nói, tôi đã hạn chế hiểu biết về Redis như một hệ thống nhắn tin, nhưng nhìn vào một số lượng lớn các công ty sử dụng nó như một hàng đợi (với Ruby Resque), tôi muốn biết liệu có một lời đề nghị như Resque trong Java hay không? bất lợi khi sử dụng Redis như một MQ trên RabbitMQ.

Trả lời

7

RabbitMQ hỗ trợ phân cụm và hiện có hàng đợi đang hoạt động/đang hoạt động cao cho phép các tùy chọn mở rộng và khả dụng hơn sau đó có thể với Redis ra khỏi hộp.

RabbitMQ cung cấp cho bạn nhiều quyền kiểm soát hơn đối với mọi thứ từ người dùng/quyền của trao đổi/hàng đợi, đến độ bền của một trao đổi hoặc hàng đợi cụ thể (đĩa so với bộ nhớ), đảm bảo giao hàng (giao dịch, Xác nhận của nhà xuất bản) .

Nó cũng cho phép linh hoạt hơn và các tùy chọn về cấu trúc liên kết của bạn (fanout, chủ đề, trực tiếp) và định tuyến cho nhiều hàng đợi, RPC với hàng đợi tin và reply-to vv

+0

Cảm ơn Duckworth. Tình trạng khó xử của tôi xuất phát từ thực tế là heello.com đang sử dụng redis/Resque và có lẽ họ đã sẵn sàng cho luồng thông điệp khổng lồ. Tôi đã tự hỏi nếu Redis đã sẵn sàng để xử lý một quy mô như vậy. Tôi vẫn muốn tìm câu trả lời, nhưng nếu không thì tôi thấy thoải mái với RabbitMQ. – Walker

+1

Mọi thư viện khách hàng mà tôi đã sử dụng cho RMQ đều có lỗi nghiêm trọng trong việc duy trì kết nối liên tục. Thiết kế/kiến ​​trúc là khá nhưng hãy xem xét các tình huống có sẵn cao trên thế giới thực. – djechlin