DELETE
You can use the HTTP DELETE method with the /messaging/qmgr/{qmgrName}/queue/{queueName}/message
resource to get messages from the associated queue manager and queue.
Destructively gets the next available message from the specified queue manager and queue,
returning the message body in the HTTP response body. The queue manager must be on the same machine
as the mqweb server. The message must have a format of MQSTR or JMS
TextMessage, and is received using the current user context.
Incompatible messages are left on the queue and an appropriate status code returned to the
caller. For example, a message which does not have a MQSTR or JMS
TextMessage format.
REST API V3 adds the ability to specify user-defined message properties and to
include message priority with messages. The ibm-mq-md-priority and ibm-mq-usr response headers are
only available with REST API V3. The ibm-mq-md-correlationId request header has a different format
in REST API V3. The header can be an application-specific ID, or, if an encoded string, retains the
ID: prefix. The ibm-mq-md-messageId response header and query parameter has a
different format in REST API V3, it retains the ID: prefix.
Resource URL
https://host:port/ibmmq/rest/v1/messaging/qmgr/{qmgrName}/queue/{queueName}/message
https://host:port/ibmmq/rest/v2/messaging/qmgr/{qmgrName}/queue/{queueName}/message
![[MQ 9.2.5 Feb 2022]](ng925.gif)
https://host:port/ibmmq/rest/v3/messaging/qmgr/{qmgrName}/queue/{queueName}/message
- qmgrName
- Specifies the name of the queue manager to connect to for messaging. The queue manager must be on the same machine as the mqweb server.
- queueName
- Specifies the name of the queue from which to get the next message.
You can use HTTP instead of HTTPS if you enable HTTP connections. For more information about enabling HTTP, see Configuring HTTP and HTTPS ports.
Optional query parameters
![[REST API v2]](ngrest2.gif)
correlationId=hexValue- Specifies that the HTTP method returns the next message with the corresponding correlation ID.
![[MQ 9.2.5 Feb 2022]](ng925.gif)
correlationId=ID:hexValue or
correlationId=application_specific_value- Specifies that the HTTP method returns the next message with the corresponding correlation ID.
![[REST API v2]](ngrest2.gif)
messageId=hexValue- Specifies that the HTTP method returns the next message with the corresponding message ID.
![[MQ 9.2.5 Feb 2022]](ng925.gif)
messageId=ID:hexValue- Specifies that the HTTP method returns the next message with the corresponding message ID.
- wait=integerValue
- Specifies that the HTTP method will wait integerValue milliseconds for the next message to become available.
Request headers
- Authorization
- This header must be sent if you are using basic authentication. For more information, see Using HTTP basic authentication with the REST API.
- ibm-mq-rest-csrf-token
- This header must be set, but the value can be anything, including being blank.
- Accept-Charset
- This header can be used to indicate what character set is acceptable for the response. If specified, this
header must be set as
UTF-8. - Accept-Language
- This header specifies the required language for any exceptions or error messages returned in the response message body.
Request body format
None.
Security requirements
The caller must be authenticated to the mqweb server. The MQWebAdmin and
MQWebAdminRO roles are not applicable for the messaging REST API. For more information about security for the
REST API, see IBM MQ Console and REST API security.
Once authenticated to the mqweb server the user is capable of using both the messaging REST API and the administrative REST API.
- The queue that is specified by the {queueName} portion of the resource URL,
must be
GETenabled. ![[MQ Appliance]](ngappliance.gif)
For the queue that is specified by the
{queueName} portion of the resource URL, +GET,+INQ, and+BROWSEauthority must be granted to the security principal of the caller.
For the queue that is specified by the {queueName} portion of
the resource URL, UPDATE, access must be granted to the security principal of the caller.
On AIX®, Linux®, and Windows, you
can grant authority to security principals to use IBM® MQ
resources by using the setmqaut command. For more information, see setmqaut (grant or
revoke authority).
On z/OS®, see Setting up security on z/OS.
Response status codes
- 200
- Message received successfully.
- 204
- No message available.
- 400
- Invalid data provided.
- 401
- Not authenticated.
- 403
- Not authorized.
- 404
- Queue does not exist.
- 405
- Queue is GET inhibited.
- 500
- Server issue or error code from IBM MQ.
- 501
- The HTTP response could not be constructed.
- 502
- The current security principal cannot receive the message as the messaging provider does not support the required function. For example, if the mqweb server class path is invalid.
- 503
- Queue manager not running.
Response headers
- Content-Language
- Specifies the language identifier of the response message in the event of any errors or
exceptions. Used in conjunction with
Accept-Languagerequest header to indicate the required language for any error or exception conditions. The mqweb server default is used if the requested language is unsupported. - Content-Length
- Specifies the length of the HTTP response body, even when there is no content. The value contains the length (bytes) of the message data.
- Content-Type
- Specifies the type of content returned in the response body of the received message. Upon
success the value is
text/plain;charset=utf-8. In the event of any errors or exceptions, the value isapplication/json;charset=utf-8. ![[REST API v2]](ngrest2.gif)
ibm-mq-md-correlationId- Specifies the correlation ID of the received message. The header is returned if the received message contains a valid correlation ID. It is represented as a 48 character hexadecimal encoded string, representing 24 bytes.
![[MQ 9.2.5 Feb 2022]](ng925.gif)
ibm-mq-md-correlationId- Specifies the correlation ID of the received message. The header is returned if the received
message contains a valid correlation ID. The correlation ID can take one of the following forms:
- A 48 character hexadecimal encoded string, representing 24 bytes, prefixed with the string
"ID:". For example:ibm-mq-md-correlationId: ID:414d5120514d4144455620202020202067d8bf5923582e02 - An application-specific value. The value is an application-specific
string:
ibm-mq-md-correlationId: My-Custom-CorrelId
- A 48 character hexadecimal encoded string, representing 24 bytes, prefixed with the string
- ibm-mq-md-expiry
- Specifies the remaining expiry duration of the received message. The header can be one of the
following values:
- unlimited
- The message does not expire.
- Integer value
- Remaining milliseconds before message expiry.
![[REST API v2]](ngrest2.gif)
ibm-mq-md-messageId- Specifies the message ID that is allocated by IBM MQ
to this message. Like the
ibm-mq-md-correlationIdheader, it is represented as a 48 character hexadecimal encoded string, representing 24 bytes. ![[MQ 9.2.5 Feb 2022]](ng925.gif)
ibm-mq-md-messageId- Specifies the message ID that is allocated by IBM MQ
to this message. Like the
ibm-mq-md-correlationIdheader, it is represented as a 48 character hexadecimal encoded string, representing 24 bytes, prefixed with the string"ID:" - ibm-mq-md-persistence
- Specifies the persistence of the received message. The header can be one of the following values:
- nonPersistent
- The message does not survive system failures or queue manager restarts.
- persistent
- The message survives system failures or queue manager restarts.
![[MQ 9.2.5 Feb 2022]](ng925.gif)
ibm-mq-md-priority- Returns the setting of the message priority. For
example:
ibm-mq-md-priority: 3 - ibm-mq-md-replyTo
- Specifies the reply-to destination for the received message. The format of the header uses the
standard notation of the reply-to queue and queue manager,
replyQueue@replyQmgr. ![[MQ 9.2.5 Feb 2022]](ng925.gif)
ibm-mq-usr- Returns message user-defined properties. Multiple properties can be set on a message, in which case there will be two or more separate instances of the ibm-mq-usr response header.
Response body format
Upon success, the response body contains the message body from the received message. If an error
occurs, the response body contains a JSON formatted error message. Both responses are UTF-8
encoded. For more information, see REST API error handling.
Be aware that when receiving a message only IBM MQ
MQSTR and JMS TextMessage formatted messages are supported.
Subsequently, all messages are received under sync-point and any unhandled messages are left on the
queue. The IBM MQ queue can be configured to move these
poison messages to an alternate destination. For further information, see Handling poison messages in IBM MQ classes
for JMS.
Examples
The following examples use the v2 resource URL. If you
are using a version of IBM MQ earlier than IBM MQ 9.1.5 you must use the v1 resource URL instead. That is, in
the resource URL, substitute v1 where the example URL uses v2.
mquser with the password
mquser. In cURL, the log in request might look like the following Windows example. The LTPA token is stored in the
cookiejar.txt file by using the -c flag:
curl -k "https://localhost:9443/ibmmq/rest/v2/login" -X POST
-H "Content-Type: application/json" --data "{\"username\":\"mquser\",\"password\":\"mquser\"}"
-c c:\cookiejar.txtAfter the user is logged in, the LTPA token and ibm-mq-rest-csrf-token HTTP
header are used to authenticate further requests. The ibm-mq-rest-csrf-token
token_value can be any value, including blank.
- The following Windows cURL example removes the next
available message from queue
Q1on queue managerQM1, using default options:curl -k "https://localhost:9443/ibmmq/rest/v2/messaging/qmgr/QM1/queue/Q1/message" -X DELETE -b c:\cookiejar.txt -H "ibm-mq-rest-csrf-token: token-value" -H "Accept: text/plain" - The following Windows cURL example removes a message
with a specific correlation ID,
0000000000000000000000000000000000000000abcdabcd, from queueQ1on queue managerQM1:curl -k "https://localhost:9443/ibmmq/rest/v2/messaging/qmgr/QM1/queue/Q1/message?correlationId=0000000000000000000000000000000000000000abcdabcd" -X DELETE -b c:\cookiejar.txt -H "ibm-mq-rest-csrf-token: token-value" -H "Accept: text/plain" - The following Windows cURL example removes a message
with a specific correlation ID,
0000000000000000000000000000000000000000abcdabcd, from queueQ1on queue managerQM1, waiting for up to 30 seconds for the message to become available. If 30 seconds passes without the specified message being put to the queue, the DELETE call returns without a message:curl -k "https://localhost:9443/ibmmq/rest/v2/messaging/qmgr/QM1/queue/Q1/message?correlationId=0000000000000000000000000000000000000000abcdabcd&wait=30000" -X DELETE -b c:\cookiejar.txt -H "ibm-mq-rest-csrf-token: token-value" -H "Accept: text/plain"