消息发布的确认
在RMQ中,消息发布的确认有两种方式,一种是AMQP标准的方式,一种是RMQ扩展的方式
1. 事务机制
通过事务的机制来保证每次消息的发布是成功的,如示例代码所示, 但这个方法最大的不足是它必须等待broker处理完后才能继续,导致这种方式的效率非常低,大概比没有启用事务要低250%左右。
|
|
2. 确认机制
除了事务机制外,RMQ还提供了一种确认机制,它通过broker的确认来实现。通过将通道切换成confirm模式来进行确认,如下代码所示,它的效率要比事务机制高得多
|
|
3. 确认机制和事务机制不能同时使用
4. 消息确认的时机
对于无法路由到任何队列的消息来讲,它将直接进行确认,对于可以路由的消息来讲,直到所有的队列都接收到消息后才会进行消息确认;对于持久化队列来讲,接收到消息意味着持久化已经完成或者已经被全部消费;对于镜像队列而言,接收到消息意味着所有的镜像队列都已经收到相应的消息,如下图所示.由于RMQ内部是通过批量序列化的方式来进行持久化的,因此对于持久化队列而言,消息确认的延迟可能会非常长