用于将文件加载到MQ队列的实用程序

Man*_*glu 4 ibm-mq

我想将文件系统中的文件加载到WebSphere MQ Queue.有几个支持pac - Q ProgramMO03:WebSphere MQ Queue Load/Unload Utility

接近但他们要求文件采用特定格式.我有消息是XML文件,并希望快速将它们加载到队列中.文件数量达到几百个,因此寻找一个实用程序来完成这项工作,而不必编写应用程序来实现这一目标.

我无法找到一些通用的应用程序来实现这一目标.所以在这里寻求一些帮助

谢谢

T.R*_*Rob 6

为什么你认为Q程序需要特定的文件格式?根据该README.TXT文件,可以使用以下选项:

-f<filename>
          Input file.
          Each line of the file will be put to output queue as a different
          message.
          See "Z/OS FILE NAME FORMAT EXAMPLES" for specific z/OS details.

-F[+]<filename>
          Input/output file.
          Entire file will be put to the output queue as a single message.
          If '+' is specified the dataset attributes will be retained if
          the output dataset exists - z/OS only.
          See "Z/OS FILE NAME FORMAT EXAMPLES" for specific z/OS details.
Run Code Online (Sandbox Code Playgroud)

因此,如果指定-F(不带+)XML文件中的所有行都加载到单个消息中.您还可以使用以下-a参数指定消息选项:

-a<Opts>  Sets message attributes when put to the output queue

          n   - forces non-persistence
          p   - forces persistence
          q   - uses queue default persistence
          d   - put a datagram message type
          r   - put a reply message type
          R   - put a request message type
          t   - put a report message type
          x   - don't treat lines starting with '#' as special
Run Code Online (Sandbox Code Playgroud)

虽然Q程序默认会解释文件,但请注意-ax上面的选项会告诉它忽略#通常将其解释为命令的行.这允许您使用注释甚至二进制文件(如PDF或JPG)加载XML文件或源代码.

Q中是否存在您无法使用的特定限制?如果是这样,知道那是什么会有所帮助,所以我们可能会指出一些更符合您目的的东西.

UPDATE

应对斯派罗的意见,Q是不是限于1000个字符.这是一个示例,其中来自Q分发的README文件被写入单个消息并被回读.

D:\WMQ\MA01>q -m JMSDEMO -OSYSTEM.DEFAULT.LOCAL.QUEUE -FREADME
MQSeries Q Program by Paul Clarke [ V6.0.0 Build:May  1 2012 ]
Connecting ...connected to 'JMSDEMO'.

D:\WMQ\MA01>echo dis q(SYSTEM.DEFAULT.LOCAL.QUEUE) curdepth | runmqsc JMSDEMO
5724-H72 (C) Copyright IBM Corp. 1994, 2011.  ALL RIGHTS RESERVED.
Starting MQSC for queue manager JMSDEMO.


     1 : dis q(SYSTEM.DEFAULT.LOCAL.QUEUE) curdepth
AMQ8409: Display Queue details.
   QUEUE(SYSTEM.DEFAULT.LOCAL.QUEUE)       TYPE(QLOCAL)
   CURDEPTH(1)
One MQSC command read.
No commands have a syntax error.
All valid MQSC commands were processed.

D:\WMQ\MA01>q -m JMSDEMO -dl -iSYSTEM.DEFAULT.LOCAL.QUEUE
MQSeries Q Program by Paul Clarke [ V6.0.0 Build:May  1 2012 ]
Connecting ...connected to 'JMSDEMO'.
MQGET 24309 bytes
============================================================================
Message Descriptor (MQMD)
Report       :00000000
Message Type :8 (Datagram)
Format       :'MQSTR   '
Priority     :0
Persistence  :0 (Not Persistent)
Message Id   :A M Q   J M S D E M O           . . . R   . * .
              414D51204A4D5344454D4F20202020201DDEA052200B2A02
              'AMQ JMSDEMO     ...R .*.'
ReplyToQ     :'                                                '
ReplyToQMgr  :'JMSDEMO                                         '
 ----------------------------------------------------------------------
|                                                                      |
|                                                                      |
|  DESCRIPTIVE NAME WebSphere MQ Q Program                             |
|                                                                      |

------- 8><-------------------------------------------------------------
REMAINDER OF MSG OUTPUT OMITTED FOR BREVITY. PRINT-OUT RESUMES...
------- 8><-------------------------------------------------------------

No more messages.

D:\WMQ\MA01>
Run Code Online (Sandbox Code Playgroud)

请注意打印消息的标题行.该-dl选项告诉Q打印消息长度,在本例中为24309字节.我下载了当前版本以执行此测试,因此截至2013年12月7日这是准确的.