At first glance it looks like the answer is in the question. You can use
- the messaging REST API put and get messages
- the admin REST API to administer queue manager objects
In a couple of places the IBM documentation says you can use the messaging API to administer your objects, which is true at the general sense, but not the specific sense. Until I hit a problem I thought there was one “messaging REST API” with different flavors of syntax.
The admin API authorisation is managed through <security-role name=”MQWebAdmin”> and <security-role name=”MQWebAdminRO”> sections in the mqwebuser.xml file.
The messaging API authorisation is managed through <security-role name=”MQWebUser”> sections.
Access to resources is done using the Alternate Userid. I can see in the activity trace that the userid is colinpaice(the id mqweb is running under), but the open of a queue was done with alternate userid testuser. When I tried to browse messages on a queue, I got a message saying my userid did not have the correct authority. I used setmqaut, and mqsc command refresh security(*) to resolve it.
Cost of the admin interface
The admin interface has a request like
which returns all of the attributes of the queue CP0000. From the activity trace we can see
- MQCONN + MQDISC
- MQOPEN, MQINQ, MQCLOSE of the manager object – twice
- MQOPEN, MQPUT, MQCLOSE to the SYSTEM.ADMIN.COMMAND.QUEUE
- MQOPEN, MQGET, MQCLOSE to the SYSTEM.REST.REPLY.QUEUE
- MQBACK – the JMQI code always does this to be sure that there is no outstanding unit of work,
The most expensive request is the MQCONNect.
Using the admin interface is fine for administration because changes to objects are usually done infrequently. If you are considering the admin interface to monitor objects, for example plot queue depths over time, the mq rest API may not be the best solution.
Cost of the messaging interface
The messaging API interface uses connection pooling. When the application does an MQDISC, the connection is returned to a pool, and can be reused if the same userid does an MQCONN. If the connection is not used for a period, it can be removed from the pool and an MQDISC done to release the connection. This should eliminate frequent MQCONN and MQDISCs.
From the activity trace we see
MQOPEN, MQGET,MQGET,MQCLOSE of the queue, and no MQCONN.
There will be an MQCONN, is there is no connection available for that userid in the pool, but this should be infrequent.