IBM のヘルプ ガイドで提案されているように、メッセージ フラグ MQMF_SEGMENTATION_ALLOWED と put メッセージ オプション MQPMO_LOGICAL_ORDER を使用して、MQ v6 でメッセージをセグメント化しようとしています。
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 では利用できない、そのような明白なものなど...)、または試してみるべきことの提案はありますか?
ところで、わずかにコンテキストフリーのコードサンプルについてお詫び申し上げます。私の問題について人々が持っている質問にできる限り答えようとします.