【问题标题】:Weblogic JMS unit of work - groups of messagesWeblogic JMS 工作单元 - 消息组
【发布时间】:2014-11-05 16:56:47
【问题描述】:

我正在使用 Weblogic JMS。我想做的是:

a) 生产者 A 生成 JMS 消息并将它们放入队列 ( groupA )
b)在处理来自 groupA 的每条消息时,我想生成另一条消息( groupB )

我有 16 个工作人员来处理这些消息。

现在,我如何确保来自 groupA 的所有消息都将在来自 groupB 的任何消息之前得到处理?

【问题讨论】:

  • 您如何知道 groupA 何时“完成”接收所有消息,或者您的意思是您只需要一些东西将消息从一个地方转发到另一个地方。您可以使用 Oracle Service Bus (OSB) 之类的东西将消息从一个队列路由/转换到另一个队列。
  • 这就是诀窍 :-) 如何做到这一点。除了我在第一篇文章中列出的以外,我不能使用任何东西,所以我需要留在 weblogic jms、spring 等的世界里。我在考虑订单单元机制,以及全局事务和一些 post 事务回调机制。但这些解决方案并不“干净”

标签: jms weblogic messaging


【解决方案1】:

这里有点晚了,但希望这会对遇到同样问题的人有所帮助。 GroupA 实际上是一个中间目的地。 JMS 队列应该在Unit-of-Work (UOW) Message Handling Policy 设置中具有默认值Pass-Through。当您的 MDB 处理这些消息时,它需要获取 Unit of Work jms 属性并在为 GroupB 发送的新消息上重置它们。此 jms 队列应将 Unit-of-Work (UOW) Message Handling Policy 设置为 Single Message Delivery。当在这个 jms 队列上接收到消息时,它们将不会被处理,直到一个工作组单元的所有消息都存在,即所有序列号 1、2、3 等和消息标识符的结尾。一旦它们都存在,mdb 会将它们作为 1 个对象消息使用,并且各个消息将包含在 List 中。然后,您的工作就是编写代码以根据需要迭代列表和流程。

Weblogic Docs here

【讨论】:

    猜你喜欢
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 2012-08-20
    • 2018-04-02
    • 2016-03-05
    • 1970-01-01
    相关资源
    最近更新 更多