IBM Queue消息传输理解

时间:2016-05-24 20:24:48

标签: java ibm-mq

我对Local vs Remote Queue的使用感到困惑。让我说一个场景:

我有一个应用程序1,它将消息(Msg1)发送到IBM MQ,该消息存储在队列1中,该队列位于QMGR中,然后由应用程序2使用。

在此阶段,我需要实现远程队列或本地队列。如果我使用本地队列,那么我将使用远程队列。

我认为这是一个基本问题,但我只是想更好地了解IBM MQ。请帮我提一下你的建议。

由于

1 个答案:

答案 0 :(得分:2)

如果您只是使用MQ以便一个应用程序可以将消息存储在队列中以供另一个应用程序检索,则所有这些都在一个队列管理器中,然后本地队列就足够了。在MQ消息中,消息总是驻留在本地队列(正常或传输队列)上,其他定义只是帮助路由流量。

何时使用远程队列的一个示例是当您希望将应用程序拆分时,因此推杆应用程序将一个机器上的一个队列管理器放入,而另一个队列管理器可能位于另一个队列管理器上机。在这种情况下,推杆可以寻址远程队列,但消息实际上最终在传输队列上 - 然后通道从传输队列中检索消息,通过通道将其传输到另一个队列管理器并放入“本地”消费者正在读取的目标队列管理器上的队列。

例如,使用远程队列,可以将生产者和消费者分开,而无需他们更改他们从中获取的队列名称 - 想象一下,生产者和消费者都从队列MYQUEUE中读取。然后,您可以将使用者移动到一个队列管理器(QM1),该队列管理器具有名为MYQUEUE的远程队列,其真实(远程)名称在另一个队列管理器(QM2)上为MYQUEUE。在队列管理器2上,您将拥有一个名为MYQUEUE的本地队列定义。生产者仍然打开并写入MYQUEUE并且不知道它的消息将被路由,消费者仍然从MYQUEUE读取并检索消息。