【问题标题】:Remote WebSphere MQ Configuration with multiple consumers具有多个使用者的远程 WebSphere MQ 配置
【发布时间】:2013-03-02 01:03:07
【问题描述】:

我们有一种情况,我们已经与供应商建立了工作设置,该供应商通过远程队列向我们发送消息。我们今天只有一个消费者从队列中消费这些消息。

我们想在我们这边添加另一个消费者来消费相同的消息。我们的目标是在不影响向我们发送消息的供应商的情况下实现这一目标(或者可能影响最小)。

在这种情况下,请您帮忙建议一下新配置(可能使用我们这边的分发列表)的样子。这是否可以在供应商无需对其进行任何更改的情况下实现。

当前配置很简单。传输 Q 已在供应商端(在他们的 Q MGR 下)设置,将其发送到 MCA 发送者 - 反过来又由我们这边的 MCA 接收者接收,并将其放入最终目的地 Q。这就是我们所在的位置希望做出改变,以便能够被第二个消费者接收。

更新:

您好,Rob,感谢您的回答。要在同一页面上。这是当前的拓扑。

Vendor Side Producer --> Proxy QA inside Q Mgr MAGR1 --> 
Sender MCA (with a channel defined) --> (Over the Internet) --> (Receiver MCA) --> 
QA inside Q Mgr MAGR2 --> Consumer. 

你的建议是我们这样做..

Vendor Side Producer --> Proxy QA inside Q Mgr MAGR1 -->
Sender MCA (with a channel defined) --> (Over the Internet) --> (Receiver MCA) --> 
NEW_TOPIC inside Q Mgr MAGR2 --> 
Two subscribers before the Two queues QA.1 and QA.2 --> to two consumers. 

你能详细说明什么是Sub1和Sub2吗?

只是想确保我们这边不需要编写任何代码。供应商方面也没有代码更改。只是供应商方面的渠道需要反弹。我们在接收方。再次感谢您的反馈。我将在星期一将此作为对 MQ 团队的建议。

非常感谢 Rob - 非常感谢您的帮助。 最后一个问题。我可以看到我们现在正在将原来的 QA 更改为类型主题。 您是否认为供应商代码(无论是 MQ 代码/JMS 代码)没有变化来反映这一点。

【问题讨论】:

  • 请添加您正在使用的消息队列系统的品牌,答案将非常具体。
  • 它的 IBM MQ。抱歉,我忘了在原始问题中提及它。另外,我不确定供应商使用的是 JMS API 还是传统的 MQ API。我们试图不要求供应商更改代码或配置以将消息传递到我们这边的新分发列表(除非那是最后一个选项)。感谢您的帮助/推荐。
  • 我修改了问题标签以包含 websphere-mq,这应该会提高您获得答案的机会。我对 IBM 的 MQ 产品不熟悉,所以无法在这里为您提供帮助,抱歉。
  • 那么您是说您想要另一个应用程序实例来与第一个实例竞争消息吗?或者您是说您需要两个不同的应用程序来使用它们自己的每条消息副本(复制消息)?
  • 我们正在寻求添加另一个应用程序来并行使用相同的消息(而不是竞争。)。我更熟悉 TIBCO 系统,在该系统中,TIBCO 直接允许我们从原始目的地创建桥接——在这种情况下,TIBCO 只需将消息复制到桥接目的地。我对 IBM MQ 不太熟悉。我只是希望它可以使用 MQ 基础设施来完成。谢谢。

标签: distribution ibm-mq mq


【解决方案1】:

这对于 WebSphere MQ 来说相当容易,尽管不像定义桥那样简单。

为了说明,假设目标队列当前是 QA,这样......

Producer --> QA --> Consumer1

如您所愿,请将 QA 转换为同名别名,指向一个主题,然后为两个新端点设置管理订阅:

(Receiver MCA) --> QA --> TopicA --> Sub1 --> QA.1 --> Consumer1
                            |
                            +------> Sub2 --> QA.2 --> Consumer2

您需要断开本地连接到队列的应用,或关闭任何可能打开的 RCVR/RQSTR/CLUSRCVR 通道。但是一旦转换为主题,您就可以随意添加或删除订阅,而不会破坏任何内容。

对更新的回应

根据响应,这很容易做到。无需停止供应商的渠道,甚至无需与供应商协调。无需自己编写代码或更改应用程序。

runmqsc MAGR1


STOP CHL(RCVRMCA) 
DEFINE QL(QA1)
DEFINE QL(QA2)
DELETE QL(QA)
DEFINE QALIAS(QA) TARGTYPE(TOPIC) TARGET(QA.TOPIC)
DEF TOPIC(QA.TOPIC) TOPICSTR(QA)
DEFINE SUB(QA1) TOPICSTR(QA) DEST(QA1)
DEFINE SUB(QA2) TOPICSTR(QA) DEST(QA2)
START CHL(RCVRMCA) 
END

C:\>AMQSPUT QA JMSDEMO
Sample AMQSPUT0 start target queue is QA
Hello world!

Sample AMQSPUT0 end

C:\>AMQSGET QA1 JMSDEMO
Sample AMQSGET0 start
message <Hello world!>
no more messages
Sample AMQSGET0 end

C:\>AMQSGET QA2 JMSDEMO
Sample AMQSGET0 start 
message <Hello world!>
no more messages
Sample AMQSGET0 end

C:\

设置安全性比定义子和主题要高级一些,所以我猜您的队列管理器可能需要锁定。请参阅Secure Messaging Scenarios With WebSphere MQ,尤其是有关强化队列管理器以保护管理访问和 B2B 使用的章节。请注意,如果 QMgr 没有被锁定,任何拥有到它的 TCP 路由的人都可以匿名管理它并在底层服务器上远程执行代码。

【讨论】:

  • 非常感谢罗。安全方面,我们已经设置好了,因为这是生产中的现有设置。但再次感谢,我会通过你发布的链接。
猜你喜欢
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-01
  • 2012-09-06
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
相关资源
最近更新 更多