【发布时间】:2016-12-13 03:13:47
【问题描述】:
我正在尝试将消息放在未在队列管理器(队列管理器别名)上本地定义的远程队列上。我被告知将远程队列管理器名称放在消息传输标头中,以便将其路由到适当的传输队列。
我可以通过以下方式连接到内部队列管理器:
Hashtable properties = new Hashtable();
properties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED);
properties.Add(MQC.HOST_NAME_PROPERTY, hostName);
properties.Add(MQC.PORT_PROPERTY, port);
properties.Add(MQC.CHANNEL_PROPERTY, channelName);
MQQueueManager queueManager = new MQQueueManager(queueManagerName, properties);
我创建消息并尝试执行 Put,但不确定在何处/如何将传输标头设置为目标队列管理器名称。
message = new MQMessage();
message.Format = MQC.MQFMT_STRING;
message.WriteString(messageString);
queueManager.Put( ???qName???, ???qmName???, message);
我尝试使用空白 qName 并获得 [MQRC_REMOTE_Q_NAME_ERROR]
更新:原来他们错误地配置了队列管理器别名。下面的答案帮助我向他们指出了这一点。正如接受的答案所述,MQ 会为您处理消息传输标头。正确配置后,它与将消息放在本地定义的远程队列中相同。
【问题讨论】: