【问题标题】:Websphere Message Queue MultithreadedWebsphere 消息队列多线程
【发布时间】:2017-06-10 05:05:18
【问题描述】:

我们是后端处理器并使用 JMS MQ 进行编程。我们有 2 个队列。一个用于获取消息,另一个用于发送消息。所有银行用户都会通过他们的 IB、MB 等向 Q1 发送消息。我们从 Q1 接收消息并对其进行处理,然后我们将消息发送到 Q2。

目前我们不为此使用多线程。我们可以为此使用多线程还是单线程就足够了。因为我们从 Q1 收到消息并处理它。

如果问题无法理解,请回复我。请有人帮助我。

【问题讨论】:

    标签: java jms ibm-mq mq


    【解决方案1】:

    是的,JMS 允许同一队列中的多个读取器。您可以通过多线程、多个应用程序实例或获取消息然后通过回调或其他机制将它们传递给处理程序的调度层来做到这一点。

    但是,应用程序必须支持这一点。例如,如果两条消息相关且必须按顺序处理,则如果队列中有多个侦听器,则不会保留顺序。这就是为什么异步消息传递模式强烈希望消息不具有顺序依赖性或关联性的原因之一。

    如果您使用多线程,请务必确保保留事务性。如果多个线程使用相同的连接并且其中一个发出COMMIT,那么它会在共享该连接的所有线程中提交所有未完成的消息。

    【讨论】:

    • 感谢您的回答 Rob.. 所以我们需要为每个线程使用新连接。
    • 如果是事务性的,你需要确保事务的范围和线程的范围匹配。这通常意味着每个线程的连接。如果它不是事务性的,那没关系。在不了解业务需求的情况下,该问题没有明确的答案。如果您将鼠标悬停在 ibm-mq 标记上并单击 info,则会有大量 MQ“入门”信息。
    • 谢谢 Rob,很抱歉问这个问题。我怎么知道事务性或非事务性。我的业务要求是:客户端将 xml 作为消息放入队列中。比如说cutomer余额查询。服务器将在后端对此进行处理,并向客户端 [另一个队列] 提供客户余额详细信息的响应。
    • 如果应用程序不能丢失您想要的事务性和持久性消息的任何消息。 MQ 为此提供了单阶段提交。如果应用程序无法获得欺骗,您可能需要 XA 样式的两阶段提交事务。从异步消息传递开发人员的角度来看,您应该熟悉可用的服务类别以及如何实现这些服务。主要的是尽力而为,至少一次,最多一次,一次且仅一次交付。另请参阅Transaction support
    • 也可以访问Enterprise Integration Patterns 网站并购买或借阅本书,
    猜你喜欢
    • 2016-09-11
    • 2011-03-13
    • 2016-06-16
    • 2012-12-08
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    相关资源
    最近更新 更多