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