如何在C#

时间:2018-07-24 07:12:29

标签: c# ibm-mq

我正在远程MQ中接收MQHRF2格式的消息。我们正在使用MISP将消息发送到远程MQ。我的问题是如何在MQ中将此格式MQHRF2更改为MQSTR或在C#中如何将此格式MQHRF2更改为字符串格式?有什么办法可以更改消息格式?请帮助

2 个答案:

答案 0 :(得分:0)

MISP如何连接并打开MQ队列?您是否使用MQ JNDI来保存连接信息?因为如果可以在MQ JNDI中将“ targetClient”设置为MQ,那么问题就解决了。

“ MQ”表示仅将有效负载传递到目标应用程序(从消息中删除属性)。

或者您可以在代码中完成它:

inQ = session.createQueue("queue://MQWT1/TEST.Q1?targetClient=1");

inQ.setTargetClient(WMQConstants.WMQ_CLIENT_NONJMS_MQ);

<config-property name="targetClient">MQ</config-property>

更新:

您可以尝试强制MQGET传递具有命名属性(消息属性)的消息,然后忽略它们。消息MQMD.format字段将为MQSTR(字符串),如果未设置,则为空白。

MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.options = MQC.MQGMO_PROPERTIES_IN_HANDLE + MQC.MQGMO_FAIL_IF_QUIESCING;
MQMessage msg = new MQMessage();
inQ.Get(msg, gmo);

答案 1 :(得分:0)

对我来说,该解决方案有效:

我使用IBM MQ Explorer连接到远程MQ。我正在以MQHRF2格式将消息接收到远程MQ中,但是我想使用MQSTR格式。提取MQSTR消息更容易。

解决方案

连接到远程MQ,然后转到 订阅->转到您的MQ->属性->常规选项卡->将属性更改为无。

Voila !!它为我工作:)。默认情况下,消息格式为MQSTR。因此,如果我们将MQHRF2更改为none,那么它将被更改为MQSTR。