事務(wù)消息
創(chuàng)建會話Session使用transacted=true
connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);
創(chuàng)建會話Session使用transacted=false
connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
事務(wù)消息必須在發(fā)送和接收完消息后顯式地調(diào)用session.commit();
事務(wù)性消息,不管設(shè)置何種消息確認模式,都會自動被確認,確認后,消息會從消息隊列移除,因為消息隊列中的消息只會被消費一次,不能當做緩存或者永久性存儲。
案例演示
● 修改QueueSender類中的消息為事務(wù)消息
● 如果發(fā)送消息后不提交,運行程序,查看ActiveMQ管理后臺,還是沒有待處理的消息
● 在QueueSender類中添加提交代碼
● 運行程序,查看ActiveMQ管理后臺,消息進入隊列
● 修改QueueReceiver類中的消息為事務(wù)消息
● 運行程序,消息可以接收到,但是查看ActiveMQ管理后臺,消息還是沒有被消費
● 在QueueReceiver類中接收消息后添加提交代碼
● 查看ActiveMQ管理后臺,消息被消費