我正在尝试让 MQ v6 使用消息标志 MQMF_SEGMENTATION_ALLOWED 和放置消息选项 MQPMO_LOGICAL_ORDER 来分段消息,如 IBM 帮助指南中所建议的那样。
ImqMessage message;
message.setFormat(MQFMT_STRING);
message.setMessageFlags(MQMF_LAST_MSG_IN_GROUP | MQMF_SEGMENTATION_ALLOWED);
/* ... */
ImqPutMessageOptions pmopts;
pmopts.setOptions(MQPMO_LOGICAL_ORDER);
if (!queue.put(message, pmopts))
{
buflen;
m_iLastError = queue.reasonCode();
CString reason;
reason.Format(_T("%d"), queue.reasonCode());
_errorMsg = "Reason code: " + reason;
/* throw exception etc.. */
}
不管我是否指定了这些标志,当我调用 put() 时,它总是返回 false 并且具有原因代码 (2010) MQRC_DATA_LENGTH_ERROR。
是否有任何与 v6 和分段相关的常见问题(例如它在 Windows 上不可用,任何类似的东西......),或者有什么建议可以尝试?
顺便说一句,为稍微无上下文的代码示例道歉。我会尽力回答人们对我的问题提出的问题。