非事务Session可以设置如下几种签收模式:

Session.AUTO_ACKNOWLEDGE 当消息从MessageConsumer的receive方法返回或者从MessageListener接口的onMessage方法返回时,会话自动确认消息签收
Session.CLIENT_ACKNOWLEDGE 需要消费者客户端主动调用acknowledge方法签收消息,这种模式实在Session层面进行签收的,签收一个已经消费的消息会自动的签收这个Session已消费的所有消息:
例如一个消费者在一个Session中消费了5条消息,然后确认第3条消息,所有这5条消息都会被签收
Session.DUPS_OK_ACKNOWLEDGE

这种方式允许JMS不必急于确认收到的消息,允许在收到多个消息之后一次完成确认,与Auto_AcKnowledge相比,这种确认方式在某些情况下可能更有效,因为没有确认,当系统崩溃或者网络出现故障的时候,消息可以被重新传递.
这种方式会引起消息的重复,但是降低了Session的开销,所以只有客户端能容忍重复的消息才可使用。(如果ActiveMQ再次传送同一消息,那么消息头中的JMSRedelivered将被设置为true)

ActionMQ非事务Session签收模式说明
Session.AUTO_ACKNOWLEDGE自动签收:默认自动签收 (常用)
Session.CLIENT_ACKNOWLEDGE手动签收:需要客户的调用acknwledge方法手动签收 (常用)
Session.DUPS_OK_ACKNOWLEDGE允许重复签收 (不常用)

Last modification:July 19, 2019
如果觉得这篇技术文章对你有用,请随意赞赏