【转载】关于RabbitMQ的消息确认
2023-09-14 08:59:45 时间
RabbitMQ 将消息投递到客户端后,客户端如果没处理完这个消息就死掉了,这个消息还会不会存在?这取决于 RabbitMQ 的消息确认机制(Message acknowledgment)是否打开。
为了确保消息不会丢失,RabbitMQ 支持消息确认机制。(在开启了消息确认机制后)客户端需要在收到消息并处理完后,发送一个 ack 消息给 RabbitMQ,告诉它该消息可以被安全删除了。假如客户端在发送 ack 之前意外死掉了,那么 RabbitMQ 会将消息投递到下一个 consumer 客户端。如果有多个 consumer 客户端,RabbitMQ 在投递消息时是轮询的。
RabbitMQ 如何判断客户端死掉了?唯一根据是客户端连接是否断开。这里没有超时机制,也就是说客户端可以处理一个消息很长时间,只要没断开连接,RabbitMQ 就一直等待 ack 消息。
消息确认机制默认是打开的,除非你设置 no_ack=True 标记来手工关闭它。
通过如下命令查看系统里的未确认消息:
springcloud:springboot整合RabbitMQ|RabbitMQ保证消息可靠性(三) 上一章我们讲解了rabbitmq的四种交换机类型、七种通讯方式。本章我们将整合springboot来向大家完整演示rabbitmq的使用,并说明如何保证消息的可靠性。
相关文章
- Rabbitmq如何保证消息顺序执行
- RabbitMQ使用交换机处理异步消息队列------分布式事务处理案例
- 【消息队列】如何保证消息的顺序性
- 第二百九十二节,RabbitMQ多设备消息队列-Python开发
- python之rabbitMQ二:队列、消息持久化
- ActiveMQ持久化消息
- RabbitMQ消息队列(七):适用于云计算集群的远程调用(RPC)
- RabbitMQ消息队列(六):使用主题进行消息分发
- 【转载】关于RabbitMQ的消息持久性
- RabbitMQ 消息确认机制confirm代码编写
- RabbitMQ消息confirm确认机制
- RabbitMQ消息轮询重发消息(消息补偿)
- CRM WebUI的错误消息是如何从后台服务器取出并绘制到前台的
- Angular 依赖注入错误消息:ERROR Error NullInjectorError No provider for XX
- 微信程序开发系列教程(二)使用JavaScript给微信用户发送消息
- 错误消息Form of address 0001 not designated for organization
- SAP Netweaver的负载均衡消息服务器 vs CloudFoundry的App Router
- 如何处理错误消息Please install the gcc make perl packages
- 【SpringBoot系列】最详细demo-- 集成使用消息队列RabbitMQ
- 一文带你认知定时消息发布RocketMQ
- 基于Docker搭建分布式消息队列Kafka
- Rabbit mq订阅方式获取消息并可设置持久化
- 【编程实践】MQ 消息队列开发实战
- RabbitMQ的消息持久化处理
- lotus v1.10.0 扇区消息上链设置不聚合
- RabbitMQ+PHP 消息队列环境配置
- 用PHP尝试RabbitMQ(amqp扩展)实现消息的发送和接收
- Kafka、RabbitMQ、RocketMQ消息中间件的对比 —— 消息发送性能-转自阿里中间件
- 基于Python语言使用RabbitMQ消息队列(六)
- 基于Python语言使用RabbitMQ消息队列(三)
- Spring Cloud Alibaba微服务第17章之消息服务