【发布时间】:2018-07-09 13:20:53
【问题描述】:
我对本地队列和远程队列的使用感到困惑。让我放一个场景:
我有一个应用程序 1,它将消息 (Msg1) 发送到 IBM MQ,将消息存储在队列 1 中,队列 1 驻留在 QMGR 中,然后由应用程序 2 使用。
在这个阶段,我是否有必要实现远程队列或本地队列。如果我为此使用本地队列,那么我将在哪里使用远程队列。
我认为这是一个基本问题,但我只是想更好地了解 IBM MQ。请帮我提出您的建议。
谢谢
【问题讨论】:
我对本地队列和远程队列的使用感到困惑。让我放一个场景:
我有一个应用程序 1,它将消息 (Msg1) 发送到 IBM MQ,将消息存储在队列 1 中,队列 1 驻留在 QMGR 中,然后由应用程序 2 使用。
在这个阶段,我是否有必要实现远程队列或本地队列。如果我为此使用本地队列,那么我将在哪里使用远程队列。
我认为这是一个基本问题,但我只是想更好地了解 IBM MQ。请帮我提出您的建议。
谢谢
【问题讨论】:
如果您只是使用 MQ,以便一个应用程序可以将消息存储在队列中以供另一个应用程序检索,所有这些都在一个队列管理器中,那么本地队列就足够了。在 MQ 中,消息总是驻留在本地队列(普通队列或传输队列)中,而其他定义只是帮助路由流量。
使用远程队列的一个示例是,当您希望将应用程序分开时,推杆应用程序将放置到一台机器上的一个队列管理器中,而消费者/获取器应用程序则存在于另一个队列管理器上,可能位于另一台机器上机器。在这种情况下,推杆可以寻址远程队列,但消息实际上最终在传输队列中 - 然后通道从传输队列中检索消息,将其通过通道流到另一个队列管理器并放入“本地”在消费者正在读取的目标队列管理器上排队。
例如,使用远程队列,可以将生产者和消费者分开,而无需他们更改从中获取的队列名称 - 想象一下,生产者和消费者都从队列 MYQUEUE 中读取。然后,您可以将使用者移动到一个队列管理器 (QM1),其中一个名为 MYQUEUE 的远程队列在另一个队列管理器 (QM2) 上的真实(远程)名称是 MYQUEUE。在队列管理器 2 上,您将拥有一个名为 MYQUEUE 的本地队列定义。生产者仍然打开并写入 MYQUEUE 并且不知道它的消息将被路由,而消费者仍然从 MYQUEUE 读取并检索消息。
【讨论】: