事務(wù)消息
創(chuàng)建會(huì)話Session使用transacted=true
connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);
創(chuàng)建會(huì)話Session使用transacted=false
connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
事務(wù)消息必須在發(fā)送和接收完消息后顯式地調(diào)用session.commit();
事務(wù)性消息,不管設(shè)置何種消息確認(rèn)模式,都會(huì)自動(dòng)被確認(rèn),確認(rèn)后,消息會(huì)從消息隊(duì)列移除,因?yàn)?strong>消息隊(duì)列中的消息只會(huì)被消費(fèi)一次,不能當(dāng)做緩存或者永久性存儲(chǔ)。
案例演示
● 修改QueueSender類中的消息為事務(wù)消息

● 如果發(fā)送消息后不提交,運(yùn)行程序,查看ActiveMQ管理后臺(tái),還是沒有待處理的消息

● 在QueueSender類中添加提交代碼

● 運(yùn)行程序,查看ActiveMQ管理后臺(tái),消息進(jìn)入隊(duì)列

● 修改QueueReceiver類中的消息為事務(wù)消息

● 運(yùn)行程序,消息可以接收到,但是查看ActiveMQ管理后臺(tái),消息還是沒有被消費(fèi)


● 在QueueReceiver類中接收消息后添加提交代碼

● 查看ActiveMQ管理后臺(tái),消息被消費(fèi)
