Rei*_*Mac 23 java messaging jms
我试图谷歌这个,但没有成功.如果我正在使用AUTO_ACKNOWLEDGE,并且我有一个用Java编写的消费者客户端,那么消息何时被确认?我使用的MessageListener是包含onMessage方法的.确认是onMessage在onMessage完成之前或之后还是在某个其他时间点发送回服务器的?提前感谢任何人都能提供的帮助!
And*_*sov 27
请检查这一个.
使用AUTO_ACKNOWLEDGE模式,确认始终是onMessage()处理程序返回后隐式发生的最后一件事.通过CLIENT_ACKNOWLEDGE在消费会话上指定模式,接收消息的客户端可以对保证消息的传送进行更细粒度的控制.
使用CLIENT_ACKNOWLEDGE允许应用程序控制何时发送确认.例如,应用程序可以确认消息 - 从而减轻JMS提供者的职责 - 并执行对消息所代表的数据的进一步处理.关键是Message对象上的acknowledge()方法,如清单1所示.
该acknowledge()方法通知JMS提供者消息已成功接收消息.如果在确认过程中发生提供程序故障,则此方法会向客户端抛出异常.提供程序失败导致JMS服务器保留消息以进行重新传递.
CLIENT_ACKNOWLEDGE
使用此确认模式,客户端通过调用消息的确认方法来确认消耗的消息.
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
...
msg = (TextMessage) consumer.receive();
//acknowledge
msg.acknowledge();
Run Code Online (Sandbox Code Playgroud)
AUTO_ACKNOWLEDGE
使用此确认模式,会话自动确认客户端收到消息时,或者当会话已成功从接收调用返回时,或者会话已调用的消息侦听器处理消息成功返回时.
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32587 次 |
| 最近记录: |