JMS createSession(false, Session.AUTO_ACKNOWLEDGE); 两个参数不同组合下的区别

Posted MIC2016

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JMS createSession(false, Session.AUTO_ACKNOWLEDGE); 两个参数不同组合下的区别相关的知识,希望对你有一定的参考价值。

createSession(paramA,paramB);

paramA 取值有 : true or false 表示是否支持事务 
paramB 取值有:Session.AUTO_ACKNOWLEDGE,Session.CLIENT_ACKNOWLEDGE,DUPS_OK_ACKNOWLEDGE,SESSION_TRANSACTED

createSession(paramA,paramB); 
paramA是设置事务的,paramB设置acknowledgment mode 
paramA设置为false时:paramB的值可为Session.AUTO_ACKNOWLEDGE,Session.CLIENT_ACKNOWLEDGE,DUPS_OK_ACKNOWLEDGE其中一个。 
paramA设置为true时:paramB的值忽略, acknowledgment mode被jms服务器设置为SESSION_TRANSACTED 。 
Session.AUTO_ACKNOWLEDGE为自动确认,客户端发送和接收消息不需要做额外的工作。 
Session.CLIENT_ACKNOWLEDGE为客户端确认。客户端接收到消息后,必须调用javax.jms.Message的acknowledge方法。jms服务器才会删除消息。 
DUPS_OK_ACKNOWLEDGE允许副本的确认模式。一旦接收方应用程序的方法调用从处理消息处返回,会话对象就会确认消息的接收;而且允许重复确认。在需要考虑资源使用时,这种模式非常有效。

以上是关于JMS createSession(false, Session.AUTO_ACKNOWLEDGE); 两个参数不同组合下的区别的主要内容,如果未能解决你的问题,请参考以下文章

activeMq-JMS消息可靠性机制-4

Jetty9 WebSocket 客户端 - SessionFactory.createSession 导致 java.lang.NullPointerException

Tomcat添加JMS远程监控

Oracle系列1Oracle 的connect权限和create session的区别

with admin option和with grant option的用法

消息确认