JMS&ActiveMQ教程
基于JMS的消息传送
ActiveMQ与Spring集成
ActiveMQ与SpringBoot集成
ActiveMQ安全机制
ActiveMQ主从集群

ActiveMQ事务消息和非事务消息

事务消息

创建会话Session使用transacted=true

connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);

非事务消息

创建会话Session使用transacted=false

connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);

事务消息必须在发送和接收完消息后显式地调用session.commit();

事务性消息,不管设置何种消息确认模式,都会自动被确认,确认后,消息会从消息队列移除,因为消息队列中的消息只会被消费一次,不能当做缓存或者永久性存储。

案例演示

● 修改QueueSender类中的消息为事务消息

● 如果发送消息后不提交,运行程序,查看ActiveMQ管理后台,还是没有待处理的消息

● 在QueueSender类中添加提交代码

● 运行程序,查看ActiveMQ管理后台,消息进入队列

● 修改QueueReceiver类中的消息为事务消息

● 运行程序,消息可以接收到,但是查看ActiveMQ管理后台,消息还是没有被消费

● 在QueueReceiver类中接收消息后添加提交代码

● 查看ActiveMQ管理后台,消息被消费