【发布时间】:2017-06-10 05:05:18
【问题描述】:
我们是后端处理器并使用 JMS MQ 进行编程。我们有 2 个队列。一个用于获取消息,另一个用于发送消息。所有银行用户都会通过他们的 IB、MB 等向 Q1 发送消息。我们从 Q1 接收消息并对其进行处理,然后我们将消息发送到 Q2。
目前我们不为此使用多线程。我们可以为此使用多线程还是单线程就足够了。因为我们从 Q1 收到消息并处理它。
如果问题无法理解,请回复我。请有人帮助我。
【问题讨论】:
我们是后端处理器并使用 JMS MQ 进行编程。我们有 2 个队列。一个用于获取消息,另一个用于发送消息。所有银行用户都会通过他们的 IB、MB 等向 Q1 发送消息。我们从 Q1 接收消息并对其进行处理,然后我们将消息发送到 Q2。
目前我们不为此使用多线程。我们可以为此使用多线程还是单线程就足够了。因为我们从 Q1 收到消息并处理它。
如果问题无法理解,请回复我。请有人帮助我。
【问题讨论】:
是的,JMS 允许同一队列中的多个读取器。您可以通过多线程、多个应用程序实例或获取消息然后通过回调或其他机制将它们传递给处理程序的调度层来做到这一点。
但是,应用程序必须支持这一点。例如,如果两条消息相关且必须按顺序处理,则如果队列中有多个侦听器,则不会保留顺序。这就是为什么异步消息传递模式强烈希望消息不具有顺序依赖性或关联性的原因之一。
如果您使用多线程,请务必确保保留事务性。如果多个线程使用相同的连接并且其中一个发出COMMIT,那么它会在共享该连接的所有线程中提交所有未完成的消息。
【讨论】:
info,则会有大量 MQ“入门”信息。