RabbitMQ
doubel_山里娃
一个程序员的经历
展开
-
RabbitMQ消息队列:ACK机制
每个Consumer可能需要一段时间才能处理完收到的数据。如果在这个过程中,Consumer出错了,异常退出了,而数据还没有处理完成,那么 非常不幸,这段数据就丢失了。因为我们采用no-ack的方式进行确认,也就是说,每次Consumer接到数据后,而不管是否处理完 成,RabbitMQ Server会立即把这个Message标记为完成,然后从queue中删除了。如果一个Consumer异常退出了,它处理的数据能够被另外的Consumer处理,这样数据在这种情况下就不会丢失了(注意是这种情况下)。为了保原创 2020-11-18 11:39:12 · 4223 阅读 · 0 评论 -
RabbitMQ镜像队列的故障恢复
http://ju.outofmemory.cn/entry/111450RabbitMQ的mirror queue(镜像队列)机制是最简单的队列HA方案,它通过在cluster的基础上增加ha-mode、ha-param等policy选项,可以根据需求将cluster中的队列镜像到多个节点上,从而实现高可用,消除cluster模式中队列内容单点带来的风险。在使用镜像队列之前,有几点注意事项必须熟记于心(下文中将混用主节点和master,从节点和slave):镜像队列不能作为负载均衡使用,因为每个操原创 2020-11-18 11:39:20 · 835 阅读 · 0 评论 -
总结
channel它有叫做轻量级连接,他的创建和关闭都会给服务器发送一个tcp请求,因此,也会耗费一定的速度;对于一个channel服务器只有当前一个消息被正确接收到之后,然后推送这个消息给客户端,这里隐藏知识点是,如果消息需要手动ACK,那么在客户端接收消息未ACK之前,服务器不会推送下一个消息给客户端,如果此时业务工作线程因为什么阻塞或者忘记ACK,就会导致后续的消息不会达到客户端;如果是自动ACK,理论上是服务器发送完一个消息之后立马发送下一个消息,因为对他来说就是“成功发送”一个channe.原创 2020-11-18 11:39:28 · 213 阅读 · 0 评论