I’m here going to show you how I setup a small environment for the MQWEB REST API, mainly to try it out. It is actually not much to be done to get this up and running
First choose the security settings. For this IBM provide us with four sample configurations (/<installation path>/mqserver/web/mq/samp/configuration/):
basic_registry.xml ldap_registry.xml local_os_registry.xml no_security.xml
Out of these I’m going to choose local_os_registry.xml because it uses the groups and users already setup on the OS. This saves me from setting up new groups and users somewhere else
Copy desired configuration to MQWEB server settings
cp local_os_registry.xml /var/mqm/web/installations/<installation name>/servers/mqweb/mqwebuser.xml
Start MQWEB server
strmqweb
That is pretty much it. Time to test
Put message on queue
curl -k -X POST -d 'helloworld' -u user:password -H "ibm-mq-rest-csrf-token: nothing" -H "Content-Type: text/plain" https://localhost:9443/ibmmq/rest/v1/messaging/qmgr/MYQM01/queue/MYQUEUE/message
Here I feel we need some explaining:
-k: The default SSL certificate on the MQWEB server is self-signed. This option ignores that
-X POST: Use POST for putting messages onto MQ
-d: This is the data (string) that eventually will land on the queue
-u: The OS user and password (part of the mqm group in this example)
-H: The “ibm-mq-rest-csrf-token” needs to exist as a header but can contain anything, can even be completely blank
-H: We need to set a content type for the payload (from the -d option above). Valid content types include:
text/plain;charset=utf-8 text/html;charset=utf-8 text/xml;charset=utf-8 application/json;charset=utf-8 application/xml;charset=utf-8
NOTE: if omitting the charset, utf-8 is assumed
URL: Default URL and port: host:9443/ibmmq/rest/v1/. On top of this we add the default URL for handling messages on queues: /messaging/qmgr/<queue manager name>/queue/<queue name>/message
Get messages from queue
curl -k -X DELETE -u user:password -H "ibm-mq-rest-csrf-token: nothing" https://localhost:9443/ibmmq/rest/v1/messaging/qmgr/MYQM01/queue/MYQUEUE/message
Here I believe that I only need to explain one option:
-X DELETE: When fetching messages from MQ we use the REST DELETE operation
Done!
A couple of useful commands:
# Stop IBM MQ REST SERVER endmqweb # Show status of MQWEB (will also show the base URL for MQWEB REST API) dspmqweb
Tested on IBM MQ 9.0.5.0 and Red Hat Linux 7.5 with curl 7.29.0