Warm tip: This article is reproduced from serverfault.com, please click

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

(ibm mq - How to send two files into a single MQ message with different MsgSeqNumber)

发布于 2020-12-03 16:55:41

下午好,

我正在使用Unix机器工作。 我有两个XML文件,需要将它们加载到队列中。这两个文件应该被“考虑”为一条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使用' MQPMO_LOGICAL_ORDER '
  3. 执行MQPUT

对于第二个文件:

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

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

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

是否可以使用ma01_qqload在UNIX上执行此操作

Questioner
spawnkam
Viewed
11
Attila Repasi 2020-12-04 22:20:51

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

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

但是我认为最好编写自己的程序来做到这一点。