IBM WAS7队列工厂配置到MQ群集

时间:2014-06-24 20:46:44

标签: ibm-mq ibm-was

我正在尝试配置连接到群集MQ的群集websphere应用程序服务器。

但是,我所拥有的信息是两个具有不同主机名的MQ实例的详细信息,服务器通道和队列管理器属于同一个MQ群集名称。

在websphere控制台上,我可以看到主机名,队列管理器和服务器通道的输入字段,我找不到任何可以指定多个MQ详细信息的内容。

如果我选择其中一个MQ细节,MQ群集是否仍然有效?如果没有,我将如何根据我的详细信息启用MQ群集?

1 个答案:

答案 0 :(得分:3)

WebSphere MQ集群会影响队列管理器之间的对话行为。它确实更改应用程序连接或与队列管理器进行通信的方式,因此所提出的问题似乎假设某种类型的群集行为在WMQ中不存在。

要设置具有两个地址的应用服务器,请参阅WAS v7知识中心中的 Configuring multi-instance queue manager connections with WebSphere MQ messaging provider custom properties ,以获取有关如何使用多实例配置连接工厂的说明{{1价值。

如果在连接工厂中指定了有效的QMgr名称,并且应用程序连接的QMgr没有该特定名称,则拒绝连接。通常,多实例CONNAME用于连接到多实例QMgr。这是一个高度可用的队列管理器,可以位于两个不同的IP地址之一,因此在这种情况下使用真正的QMgr名称。但是,如果您的应用程序所连接的QMgrs是两个不同且命名不同的队列管理器,这就是您所描述的,您应该在连接工厂中指定一个星号(CONNAME字符)作为队列管理器名称描述here。这样,应用程序在获得连接时不会检查QMgr的名称。

  

如果我选择其中一个MQ细节,MQ群集是否仍然有效?如果不,   鉴于我的详细信息,我将如何启用MQ群集?

取决于您的意思"群集"。如果您认为该应用程序将看到由两个队列管理器托管的一个逻辑队列,则不会。这不是WMQ集群的工作原理。托管群集队列的每个队列管理器都会获取发送到该队列的消息子集。因此,从该队列获取的任何应用程序都只会看到本地子集。

但如果通过"聚类"您打算交替连接到两个队列管理器中的一个或另一个,并将消息传输到同一集群中但未托管在您连接的两个QMgrs中的任何一个上的队列,然后是的,它将正常工作。如果您的Connection Factory只知道两个QMgrs中的一个,那么您将只连接到该QMgr,并且向群集发送消息仍然有效。但是按照我提供的链接中的描述进行设置,您的应用程序将能够连接到两个QMgrs中的任何一个,您可以通过停止其连接的频道上的频道并观看它连接到另一个。

祝你好运!

更新:

  

要明确提供的详细信息类似于hostname01,qmgr01,   queueA,serverchannel01。另一个是hostname02,qmgr02,queueA,   serverchannel02。

仅当......时,WMQ客户端才会使用多实例*连接到两个不同的QMgrs。

  • 两个QMgrs上使用的频道名称完全相同
  • 应用程序在发出连接请求时(即在连接工厂中)使用星号(CONNAME字符)或空格作为QMgr名称。

可以通过使用客户端连接定义表(也称为CCDT)将WMQ连接到几个不同的队列管理器中的一个,其中每个队列管理器的通道名称都不同。 CCDT是使用*命令创建的编译工件,用于定义MQSC个通道。它包含客户端有资格连接的每个QMgrs的条目。每个都可以有不同的QMgr名称,主机,端口和通道。但是,在定义CLNTCONN时,管理员会定义所有条目,以便使用应用程序高级限定符替换QMgr名称。例如,Payroll应用程序想要连接到3个不同QMgrs中的任何一个。 WMQ管理员定义了一个包含三个条目的CCDT,但对QMgr名称使用CCDTPAY01PAY02。请注意,这不需要与实际的QMgr名称匹配。然后,应用程序将QMgr名称指定为PAY03,它选择CCDT中的所有三个QMgrs。

有关CCDT的详细信息,请参阅Using a client channel definition table with WebSphere MQ classes for JMS

  

MQ群集与应用服务器群集不相似吗?

不,完全没有。

  

其中双子节点连接到群集。并且F5 URL会   用于将负载分配给每个节点。不是WMQ带来的   我们只是发送消息和分区的集群url / f5   消息是透明的吗?

没有。 WMQ集群提供了一个名称空间,应用程序和QMgrs可以在其中解析非本地对象,例如队列和主题。连接到WebSphere MQ集群的唯一事情是队列管理器。应用程序和人类用户始终连接到特定的队列管理器。可能有一组可互换的队列管理器,例如CCDT,但每个都是独立的。

使用WAS,消息传递引擎可以在多个节点上运行,但它提供了一个逻辑队列,应用程序可以从中获取消息。使用WMQ,托管该队列的每个节点都会获得消息的子集,而使用这些消息的任何应用程序都只能看到该子集。

HTTP是无状态的,因此F5 URL效果很好。当它确实维护会话时,该会话主要用于优化远离连接开销并且往往是短暂的。 WMQ客户端通道是有状态的,并且协调单相和两相工作单元。如果应用程序在UOW期间故障转移到另一个QMgr,则无法协调该UOW。

由于WMQ连接的性质,F5在QMgrs之间永远不会使用。它仅在客户端和QMgr之间用于连接平衡而不是消息流量平衡。此外,缺少或存在MQ集群对应用程序完全透明,在任何一种情况下,它都只是连接到QMgr以获取和/或放置消息。使用多实例PAY*或CCDT文件通过提供客户端可以连接的多个等效QMgrs使该连接更加健壮,但与WMQ群集无关。

这有帮助吗?

请参阅: