Ibm mq 是来自群集QMGR的MQ路由消息

Ibm mq 是来自群集QMGR的MQ路由消息,ibm-mq,Ibm Mq,我正在使用WAS MQ 7.0,这是我的场景 我有一个名为'CLUSD'的集群队列管理器和两个名为'N1',N2'的集群节点N1和N2配置相同 当我尝试向CLUSD发送消息时,qmgr尝试向其节点发送消息(N1,N2);在这个时候一切都很好。但如果其中一个节点关闭;例如,如果N1关闭;我希望CLUSD在N1可用时将所有消息发送到N2CLUSD向两者发送消息;但它不工作,这意味着当N1关闭时CLUSD将部分消息(并非所有消息)发送到N2,并将其他消息保留到他的传输队列,以及N1可用时CLUSD将未

我正在使用WAS MQ 7.0,这是我的场景

我有一个名为
'CLUSD'
的集群队列管理器和两个名为
'N1',N2'
的集群节点<代码>N1和
N2
配置相同

当我尝试向
CLUSD
发送消息时,qmgr尝试向其节点发送消息(
N1,N2
);在这个时候一切都很好。但如果其中一个节点关闭;例如,如果
N1
关闭;我希望
CLUSD
N1
可用时将所有消息发送到
N2
CLUSD
向两者发送消息;但它不工作,这意味着当
N1
关闭时
CLUSD
将部分消息(并非所有消息)发送到
N2
,并将其他消息保留到他的
传输队列
,以及
N1
可用时
CLUSD
将未送达的消息发送到
N1

当我向
CLUSD
发送消息时,似乎是这样;我认为,这个qmgr设置了一个标签作为目标qmgr;并在目的地可用时保留它


我能做些什么来解决这个问题。

您如何将消息发送到队列?当您打开集群队列时,请使用BIND_NOT_FIXED选项打开它。这将允许接收qmgr决定在运行时使用哪个集群队列。这也将允许接收qmgr路由到可用的集群队列

WAS应允许默认绑定为not fixed。

我正在使用JMS向队列发送消息。如何打开绑定未固定的连接。我在某处看到一条评论,建议将队列DEFBIND属性设置为绑定未固定。我正在努力,但没用。您知道当我的CLUSSDR频道在SMSCLUSD中连接到节点N1时;状态为“已停止”,要使用此通道的新消息正在TRANSMIT.QUEUE中存储。我希望这些消息路由到N2的另一个通道。WAS应该支持它。如果没有,请使用集群别名,并在JMS绑定定义中使用该集群别名而不是qmgr。集群别名应该指向指向集群队列的别名队列,并设置为DEFBND(NOTFIXED),我只需检查DEFBND(NOTFIXED);但它不起作用。正如您所知,默认情况下,队列具有DEFBND(OPEN),我将其更改为NOTFIXED,但它不工作。在这些更改之后是否有必要停止和启动SMSCLUSD?集群是IBM mq(提供程序)特定的,而JMS是标准的。如果您想混合使用这两种方法,请使用您自己的JNDI绑定文件以队列详细信息引导应用程序。使用JMSAdmin生成JNDI绑定。每个集群队列都应该有一个用DEFBND(NOTFIXED)定义的别名。然后定义集群别名(类似于qmgr别名),并在上述JMS JNDI Q定义中使用该集群别名而不是队列管理器。当应用程序连接到群集网关qmgr时,qmgr将被迫解析与可用群集队列的绑定。我通过更改群集CLUSD中所有队列的配置来解决这个问题。我将DEFBIND从默认值“ON OPEN”更改为“NOTFIXES”。下面是创建队列的命令:定义QLOCAL(Q1)集群(CLUSD)DEFBIND(NOTFIXED);