我正在使用Weblogic JMS。我想做的是:
a)生产者A生成JMS消息并将它们放在队列(groupA)上 b)当处理来自groupA的每条消息时,我想生成另一条消息(groupB)
我有16名工人来处理这些消息。
现在,我如何确保来自groupA的所有邮件将在来自groupB的任何邮件之前处理?
答案 0 :(得分:1)
这里有点晚了,但希望这可以帮助任何有同样问题的人。 GroupA实际上是一个中间目的地。 JMS队列在Pass-Through
设置中应具有默认值Unit-of-Work (UOW) Message Handling Policy
。当您的MDB处理这些消息时,它需要获取工作单元jms属性并在为GroupB发送的新消息上重置它们。此jms队列应将Unit-of-Work (UOW) Message Handling Policy
设置为Single Message Delivery
。当在该jms队列上接收到消息时,它们将不被处理,直到存在工作单元的所有消息,即所有序列号1,2,3等和消息标识符的结尾。一旦它们全部存在,mdb将使用它们作为1个对象消息,并且各个消息将包含在List
中。然后,您需要编写代码来迭代列表并根据需要进行处理。