如何在 C# 中将消息格式从 MQHRF2 更改为字符串格式

How to change message format from MQHRF2 to string format in C#

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

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 传递带有 Named Properties(消息属性)的消息,然后忽略它们。如果未设置,消息 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);

对我来说这个解决方案有效:

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

解决方案

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

瞧!!它对我有用:)。默认消息格式是 MQSTR 。因此,如果我们将 MQHRF2 更改为 none 那么它将更改为 MQSTR 。