gpt4 book ai didi

c - 如何在C中发送没有RFH头的MQ消息?

转载 作者:太空宇宙 更新时间:2023-11-04 07:44:43 25 4
gpt4 key购买 nike

如何在 C 中发送没有 RFH header 的 MQ 消息,换句话说,我如何使用“C”库接口(interface)发送 NonJMS MQ 消息?

基本上,有没有等价于“C”的

((com.ibm.mq.jms.MQQueue) queue).setTargetClient(JMSC.MQJMS_CLIENT_NONJMS_MQ);

在我进行的“C”次 MQ 调用之后

MQCONNX(qmgrName, &mqcno, &hConn_, &compCode, &cReason);
MQOPEN(hConn_, &od, openOptions, &hObj_, &openCode, &reason)
MQCRTMH(hConn_, &cmho, &hMsg, &createCode, &reason)
MQSETMP(hConn_, hMsg, &smpo, &prop, &pd, MQTYPE_STRING, propVal.length(), propVal, &compCode, &reason);
pmo.Version = MQPMO_VERSION_3;
pmo.OriginalMsgHandle = hMsg;
MQPUT(hConn_, hObj_, NULL, &pmo, msg._theMessage.length(), buffer, &compCode, &reason);
MQDLTMH(hConn_, &hMsg, &dmho, &compCode, &reason);

pmo.OriginalMsgHandle = hMsg //This line is causing RFH header

MQ 接收器给出以下输出。我正在使用 C++ MQ 接口(interface)来接收消息,因为这是现有代码正在做的事情,并且需要确保 C 生成的消息可以被 C++ 接收器读取

2024489 - 2019-09-26 09:00:05.691154 Receiver: Received Message from MQ of size 490
2024489 - 2019-09-26 09:00:05.691163 Receiver: Received Message from MQ --> RFH ^B
std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string (this=0x6ce7938,
__str="RFH \002\000\000\000P\000\000\000\"\002\000\000\063\003\000\000MQSTR \000\000\000\000\270\004\000\000(\000\000\000<usr><GROUP_ID>1</GROUP_ID></usr> corrId: \"CORR_ID\"\nchannel: \"HIFI\"\nemp
Ids {\n empId {\n type: \"CALLER_NO\"\n value: \"123456"...)

最佳答案

用于 JMS API 和 XMS API(C++ 和 .NET)的 IBM MQ 类是唯一默认发送 RFH2 header 的 API。

您提到的下面的设置特定于 JMS API(对于 XMS 会有类似或相同的设置)并告诉 API 接收消息的应用程序不是 JMS 应用程序,因此不要发送 RFH2 header :

((com.ibm.mq.jms.MQQueue) queue).setTargetClient(JMSC.MQJMS_CLIENT_NONJMS_MQ);

如果您使用 C API 发送消息,它将没有 RFH2 header ,因此没有设置来关闭不发送的内容。

关于c - 如何在C中发送没有RFH头的MQ消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58102246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com