我目前正在阅读同步JMS for JAVA。我正在努力确认我的理解是否正确。根据我在Google中搜索的内容,我的理解是JMS同步方法,如果出现超时,消息将永远丢失。我说得对吗?
,我的问题是:,如果发生超时,或者应用程序使用基于以下示例的同步JMS方法处理消息崩溃时,消息会发生什么变化?
以同步为例,其中系统A是消息的产生者,系统B使用和处理消息
1:系统A将消息发送到队列并提交。
2:系统A连接仍然可用,等待确认
3:另一边的System将使用接收()来使用来自队列的消息
4: System使用消息并尝试保存/处理消息。
5:此时,系统B崩溃。消息回滚到队列(我是否正确地理解了这一点)
6:假设系统B是在2分钟内提出的。系统A仍在等待响应超过2分钟(假设没有超时)
7: System将再次使用来自同一个队列的消息并提交。
8:下一个系统A将收到一个确认系统B已经成功地处理了消息
发布于 2015-12-16 17:07:33
有一种叫做死信队列的东西,当使用者无法处理消息时,消息就会发送出去。我知道ActiveMQ有这个特性,但我不太确定它是否是JMS规范的一部分。我最近一直在使用HornetQ,它还有一个死信队列功能。
http://activemq.apache.org/message-redelivery-and-dlq-handling.html
发布于 2016-07-05 12:55:50
您是指同步发送或模拟在JMS上构建的请求/应答吗?
JMS提供者承担起persistence/redeliver/dead letter/etc的责任。同步发送只涉及线程,直到消息被复制到JMS。requests和replies)https://stackoverflow.com/questions/34317605
复制相似问题