RabbitMQ vs Apache ActiveMQ vs Apache qpid

本文介绍了RabbitMQ、Apache ActiveMQ和Apache Qpid这三种消息队列的特性。RabbitMQ不保证一次且仅一次的消息传递,适合简单异步消息传递;ActiveMQ具有高度配置性和多种集群选项,但性能可能较低;Qpid支持事务和持久化,使用可插拔层进行持久化。在选择时需根据具体需求考虑其优缺点。
摘要由CSDN通过智能技术生成
Posted by Bhavin Turakhia 

We need a simple message queue to ensure asynchronous message passing across a bunch of our server side apps. The message volume is not intended to be very high, latency is not an issue, and order is not important, but we do need to guarantee that the message will be received and that there is no potential for failure irrespective of infrastructure downtime. 

Dhruv from my team had taken up the task of researching various persistent message queue options and compiling notes on them. This is a compendium of his notes (disclaimer – this is an outline of our experience, there may be inaccuracies) - 
RabbitMQ 

General: 

    * Some reading on clustering http://www.rabbitmq.com/clustering.html 
    * DNS errors cause the DB(mnesia) to crash 
    * A RabbitMQ instance won’t scale to LOTS of queues with each queue having fair load since all queues are stored in memory (queue metadata) and also in a clustered setup, each queue’s metadata (but not the queue’’s messages) is replicated on each node. Hence, there is the same amount of overhead due to queues on every node in a cluster 
    * No ONCE-ONLY semanamntics. Messages may be sent twice by RabbitMQ to the consumer(s) 
    * Multiple consumers can be configured for a single queue, and they will all get mutually exclusive messages 
    * Unordered; not FIFO delivery 
    * Single socket multiple connections. Each socket can have multiple channels and each channel can have multiple consumers 
    * No provision for ETA 
    * maybe auto-requeue (based on timeout) — needs investigation 
    * Only closing connection NACKs a message. Removing the consumer from that channel does NOT. Hence, all queues being listened to on that channel/connetion are closed for the current consumer 
    * NO EXPONENTIAL BACKOFF for failed consumers. Failed messages are re-tried almost immediately. Hence an error in the consumer logic that crashes the consumer while consuming a particular message may potentially block the whole queue. Hence, the consumer needs to be programmed well — error free. However, apps are like; well apps… 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值