【发布时间】:2013-04-16 14:22:49
【问题描述】:
我想同时使用来自多个队列的 jms 消息。所有的消息都应该在长时间运行后进入数据库,我无权丢失它们。
问题:是否可以保存消息以供将来确认并在处理另一条消息时调用oldMessage.acknowledge()?
我的第一个猜测是这是不可能的,因为它在 jms 处理单元的深处,我必须在 onMessage(...) 方法中处理消息和确认。
第二个猜测是同时拆分 onMessage() 并允许对许多消息进行长时间运行处理。但这不是一个好的选择,因为我必须确保所有消息都有序!
第二个问题:有什么方法可以确保并发时的传入顺序处理?
【问题讨论】:
-
所以你有例如 2 个队列,在第一个队列中你得到消息 A 和 B,在第二个队列中你得到消息 C 和 D?现在至少有两个线程在读取它们。他们也做了很多工作并将它们存储在数据库中,对吗?那么当它们插入数据库时,您想保留相同的顺序吗?
-
为了使处理并发我的意思是对每个输入队列进行并发处理,例如here,所以我认为如果我有消息A和B的队列,那么我想确保它们来到订购的数据库
标签: java concurrency jms