RabbitMQ之消息确认 - AMQP 事务机制
2023-09-27 14:19:47 时间
1 服务端确认 - Transaction模式
注意,此事务非数据库的事务概念!
//将channel设置成事务模式
- channel.txSelect();
//提交事务
- channel.txCommit();
//事务回滚
- channel.txRollback();
当消息的发布者在将消息发送出去之后,消息到底有没有正确到达broker代理服务器呢?如果不进行特殊配置的话,默认情况下发布操作是不会返回任何信息给生产者的,也就是默认情况下我们的生产者是不知道消息有没有正确到达broker的,如果在消息到达broker之前已经丢失的话,持久化操作也解决不了这个问题,因为消息根本就没到达代理服务器,你怎么进行持久化,那么这个问题该怎么解决呢?
RabbitMQ为我们提供了两种方式:
方式一:通过AMQP事务机制实现,这也是从AMQP协议层面提供的解决方案;
方式二:通过将channel设置成confirm模式来实现;
AMQP的事务模式是怎么使用的:
RabbitMQ中与事务机制有关的方法有三个,分别是Channel里面的txSelect(),txCommit()以及txRollback(),txSelect用于将当前Channel设置成是transaction模式,txCommit用于提交事务,txRollback用于回滚事务,在通过txSelect开启事务之后,我们便可以发布消息给broker代理服务器了,如果txCommit提交成功了,则消息一定是到达broker了,如果在txCommit执行之前broker异常奔溃或者由于其他原因抛出异常,这个时候我们便可以捕获异常通过txRollback回滚事务了。
相关文章
- 继承CListCtrl,然后重载OnLButtonUP消息,发现变成双击才触发???
- ActiveMQ消息队列的使用及应用
- 企业微信发送消息
- IOS 消息机制(NSNotificationCenter)
- 极客日报:阿里回应本地生活裁员:消息不实;高通、微软合作开发元宇宙芯片;Sentinel 1.8.3 发布
- linux 消息队列例子
- 使用事件和消息队列实现分布式事务
- 7年磨一剑 阿里云消息队列正式商用
- Effective Objective-- 对象,消息,运行期
- 消息同步 —— 在 Airbnb 我们是怎样扩展移动消息的
- Kafka快速入门(生产者)同步异步发送、分区、消息精确一次发送、幂等性、事务
- 使用钉钉机器人,发送群消息
- rocketmq如何保证消息不丢失
- Mfc资源消息的响应机制