Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Utility to load files to a MQ Queue

Tags:

ibm-mq

I want to load files in the file system to a WebSphere MQ Queue. There are couple of support pacs - Q Program and MO03: WebSphere MQ Queue Load / Unload Utility

that come close but they mandate the files to be in a specific format. I have the messages which are XML files and want a quick way to load them to a queue. The number of files run into a few hundred so looking for an utility to do this job instead of having to write an application to achieve this.

I could not locate some general purpose application to achieve this. So looking for some help here

Thanks

like image 270
Manglu Avatar asked Feb 18 '23 20:02

Manglu


2 Answers

Why do you believe that the Q program requires a specific file format? According to the README.TXT file, the following options are available:

-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.

So if you specify -F (without the +) all lines in the the XML file are loaded into a single message. You can also specify the message options using the -a parameter:

-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

Although the Q program will interpret files by default, note that the -ax option above tells it to ignore lines with # which it would ordinarily interpret as commands. This allows you to load XML files or source code with comments or even binary files such as a PDF or JPG.

Was there a specific limitation in Q that you are unable to work with? If so, it would be helpful to know what that is so we might point you to something that would better fit your purpose.

UPDATE

Responding to Spyro's comments, Q is not limited to 1000 characters. Here's an example where the README file from the Q distribution is written to a single message and read back.

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>

Note the header lines where the message was printed. The -dl option tells Q to print the message length which, in this case, was 24309 bytes. I downloaded the current version to perform this test so this is accurate as of 7 December 2013.

like image 131
T.Rob Avatar answered Feb 21 '23 09:02

T.Rob


If you are looking for loading the file to queue.. Its easy to work with RFHUtil s/w or application.

In RFHUtil you can easily load the file to MQ and clear the Queue, purge ect...

Many more options are provided .

like image 34
saagaravk Avatar answered Feb 21 '23 10:02

saagaravk