如何将两个文件发送到具有不同 MsgSeqNumber 的单个 MQ 消息中

How to send two files into a single MQ message with different MsgSeqNumber

下午好,

我在 unix 机器上工作。 我有两个 XML 文件,我需要将它们加载到队列中。这两个文件应该是 'considered' 一条 MQ 消息。

首先,我尝试将文件连接在一起并使用

将它们上传到队列中
ma01_q -o QueueName -m ManagerQueue -F Filename;

但是,消息的接收者未能成功区分这两个文件。 他向我提供了十六进制消息中预期的部分内容:

...
A GRP 000...
A MSQ 1
...
A MSF 8
...
The content of the first file in hexadecimal
... 
A GRP 000...
A MSQ 2
...
A MSF 24
...
The content of the second file in hexadecimal

所以按照他的说法,我应该使用参数GroupIdMsgSeqNumber。 对于第一个文件:

  1. 将'MQMF_MSG_IN_GROUP'放入消息描述符的字段MsgFlags
  2. MQPUT.
  3. 上使用“MQPMO_LOGICAL_ORDER
  4. 执行 MQPUT.

第二个文件:

  1. 将'MQMF_LAST_MSG_IN_GROUP'放入消息描述符的字段MsgFlags
  2. MQPUT.
  3. 上使用选项“MQPMO_LOGICAL_ORDER
  4. 执行 MQPUT.

这将为每个文件自动生成一个“GroupID”和“MsgSeqNumber”。使用标志 'MQMF_LAST_MSG_IN_GROUP' 将确保消息组是 'closed'.

这两个文件各是一条消息,但使用 MQ“消息分组”组合在一起。

是否可以在 unix 上使用 ma01_qqload 来做到这一点?

ma01 和 qload 都不支持创建消息组。

您可以使用支持包 ih03 中的 mqput2 程序。 mqput2 程序可以使用文件中提供的 MQMD 头。因此,您需要将 MQMD 添加到您的文件,以及所需的消息组和序列号详细信息,然后使用 mqput2 将您的文件放入队列。

但我认为最好自己编写程序来完成此操作。