1

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

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

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

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

更新:

嗨,罗布,谢谢你的回答。要在同一页面上。这是当前的拓扑。

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 代码)没有变化来反映这一点。

4

1 回答 1

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:\

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

于 2013-03-03T02:39:14.450 回答