java - IBM队列消息传输理解

标签 java ibm-mq

我对本地队列与远程队列的使用感到困惑。让我举一个场景:

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

现阶段我是否有必要实现远程队列或本地队列。如果我为此使用本地队列,那么我将在哪里使用远程队列。

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

谢谢

最佳答案

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

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

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

关于java - IBM队列消息传输理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37423200/

相关文章:

java - 使用 Java 调用 PostgreSQL 存储过程返回 null

java - MERGE 是 SQL 2008 中的原子语句吗?

Java 连接到 WMQ 8

java - JMS 传输与 MQ 传输

java - 为什么 indexOf 找不到对象?

java - 尝试在Java中仅打印输入单词中的每个字符一次

java - 为什么会抛出空点异常?

.net - 如何在 .NET 中从 Websphere MQ 获取事务?

module - Zabbix IBM MQM 可加载模块阻止 Zabbix Agent 服务

java - 使用 Java 客户端连接到 MQ channel :CERTLABL error