ActiveMQ从0到1(五)


prtyaa
prtyaa 2023-12-28 15:59:23 50634
分类专栏: 资讯

消息可靠性

JMS如何保证消息的可靠性,一般来说有这几个角度

1、persistent:持久性

2、事务

3、Acknowledge:签收

宕机指的是mq的服务器宕机。

 

非持久化,宕机后再重启就都是0了,消息不存在

持久化后,宕机重启消息都在,只不过没有入队,如图所示本来是3030,现在是3000

默认的就是持久化

队列默认的是持久化。topic持久化需要消费者先订阅

topic一定要先运行一次消费者,等于向MQ注册,类似订阅了这个主题

然后再运行生产者发送消息,此时无论消费者额是否在线,都会接受到,不在线的话,下次连接的时候,会把没有收过的消息都接收。


事务

这是事务创建时候的源代码:当transacted == true的时候,是不走if判断的,直接return ,return里的是三元表达式 transacted?==true的时候无论代码里签收方式是啥样的,最后的签收方式都是session_transacted

 

事务偏生产者,签收偏消费者

事务的话
假如生产者设置为false,那么只要执行send方法,消息就进入到队列中。----------------消费者事务设置为false,mq里的消息被消费------------------------------------------ 消费者事务设置为true,消费者显示是消费了消息,mq里的消息不被消费,但是------------消费者事务只有设置为true,并且commit的时候,mq里的消息才被消费掉,

 

假如生产者事务设置为true,那么执行完send方法,需要执行commit()消息才被真正的提交到队列中。----------------------------------------------------------------------------消费者事务设置为false,mq里的消息只能被消费一次。-----------------------------------消费者事务设置为true,消费者显示是消费了消息,但是mq里的消息没有变,显示没有被消费。只有消费者设置为true的同时commit了,mq里的消息才正确的被消费
生产者需要开启事务,并且最后要session.commit(),异常rollback,finally session.close()

很简单,就把mq想想成数据库,生产者往mq里发消息,那不就是insert么,insert肯定是要commit才能把消息提交到数据库(mq)里。不然mq里没有数据。

消费者这边也好理解,消费者事务是false的时候,是可以消费的,mq里消息也被消费掉。但是假如代码里有其他业务,还是设置成true好,设置成true,就必须commit。不然就是一直重复消费消息,mq里的消息不变

根本不用把生产者的事务和消费者的事务挂钩,生产者的事务是保证的是往mq里写数据的,是写进去了还是没写进去。


签收主要是对消费者来说的,相当于快递嘛,发快递的人签收干嘛呢?肯定是收快递的人签收。

这个是事务的源码,可以看见假如生产者是开启了事务,那么签收方式最后都是 Session.SESSION_TRANSACTED

消息非事务模式下的签收。

自动签收是默认的,
手动签收,一定要调用ack才行,不然又是重复消费,mq里消息不变

消息在事务下的签收

如果事务为true了,那么后面的签收参数就不重要了,从源码中可以看出。但是一定要记得提交commit,ack不ack都行。如果事务为true,那么事务权限更大。事务为true,就是等于自动签收了。

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=31745
赞同 0
评论 0 条
prtyaaL2
粉丝 1 发表 2553 + 关注 私信
上周热门
【软件正版化】软件正版化工作要点  3671
统信UOS试玩黑神话:悟空  3594
如何使用 StarRocks 管理和优化数据湖中的数据?  3541
信刻光盘安全隔离与信息交换系统  3107
grub引导程序无法找到指定设备和分区  2165
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1819
有在找工作的IT人吗?  1055
海康威视2025校招|海康机器人,邀你共创工业智能化未来!  1049
WPS City Talk · 校招西安站来了!  977
麒麟天御安全域管平台升级!为企业管理保驾护航  951
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
我有15积分有什么用? 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
信创再发力!中央国家机关台式计算机、便携式计算机批量集中采购配置标准的通知 8

加入交流群

请使用微信扫一扫!