1.8 REST Services - jmstoolbox/jmstoolbox GitHub Wiki

REST Listener

JMSToolBox exposes some features as REST services. A REST listener is managed by JMSToolBox on a given port (9998 by default). The REST calls uses the artefacts (sessions, templates, scripts) configured in JMSToolBox to perform actions as described below This feature allows external tools to be used in various automated scripts or tests scenarios that involve dealing with Q Managers and JMS messages JMSToolBox REST services currently consumes and produces data in JSON format

Configuration/Setup

In the preference pages, it is possible to configure this feature by setting:

  • The port number where the REST listener will listen on
  • If the REST listener is activated when JMSToolBox starts

The "REST Connector" menu allows to start, stop and see the status of the the REST connector

Services

REST Services for Sessions

Verb URI Body Result Description
GET /rest/session/{sessionName} n/a List<Destination> Get destination names defined at {sessionName}

REST Services for Queues

Verb URI Body Result Description
GET /rest/queues/{sessionName}/depth n/a List<Queue> Get queue depth for all queues defined at {sessionName}
GET /rest/queues/{sessionName}/depth/{queueName} n/a List<Queue> Get queue depth for queue {queueName} defined at {sessionName}

REST Services for Messages

Verb URI Body Query Params Result Description
GET /rest/message/{sessionName}/{destinationName} n/a limit=n
jmsSelector=<jms selector>
payloadSearch=<search text>
List<Message> Get the first <n> (Default 200) messages from {sessionName}::{destinationName}
POST /rest/message/{sessionName}/{destinationName} MessageInput - Message Post/Publish a TextMessage, MapMessage or "JMS Message" message to {sessionName}::{destinationName}
POST /rest/message/{sessionName}/{destinationName}/{templateName} - - Message Post/Publish a message to {sessionName}::{destinationName} from {templateName}. Currently, the template must be defined at the root of the system Template folder
PUT /rest/message/{sessionName}/{destinationName} n/a limit=n
jmsSelector=<jms selector>
List<Message> "Consume" (=MessageConsumer.Receive()) the first <n> (default=1) messages from {sessionName}::{destinationName}
DELETE /rest/message/{sessionName}/{queueName} n/a - - Empty queue {sessionName}::{queueName}

REST Services for Scripts

Verb URI / Description Body / Result
POST /rest/script ScriptInput
Execute a script ScriptOutput

Model

MessageInput:

 {
  "deliveryMode" : "<PERSISTENT|NON_PERSISTENT>",
  "priority" : "<[0-9]>",
  "deliveryDelay" : "<n>",
  "timeToLive" : "<n>",
  "jmsCorrelationID" : "",
  "jmsType" : "",
  "type" : "<TEXT|MAP|MESSAGE>",
  "replyTo" : "",
  "payloadText" : "",
  "payloadMap" :  {"p1":"","p2":""},
  "properties" : {"p1":""}
 }

Remarks:

  • TEXT messages payload is held in the payloadText variable
  • MAP messages payload is held in the payloadMap variable

Message (example):

 {
   "jtbMessageType": "TEXT",
   "jmsMessageID": "ID:414d51204d5120202020202020202020f9aef762026e0040",
   "jmsPriority": 4,
   "jmsDestination": "queue:///DEV.QUEUE.1",
   "jmsCorrelationID": "abcd",
   "jmsDeliveryMode": "PERSISTENT",
   "jmsDeliveryTime": "2022-08-13 10:43:14.954",
   "jmsTimestamp": "2022-08-13 10:43:14.954",
   "jmsRedelivered": false,
   "properties":    {
      "JMSXAppID": "JMSToolBox                  ",
      "JMSXDeliveryCount": "0",
      "JMSXUserID": "app         ",
      "JMS_IBM_PutApplType": "28"
      "JMS_IBM_PutDate": "20220813",
      "JMS_IBM_PutTime": "14431474",
   },
   "payloadText": "hello"
 }

Queue:

[
 {
   "name": "QUEUE1",
   "depth": 11
 },
 {
   "name": "QUEUE2",
   "depth": 0
 }
]

ScriptInput:

 {
  "scriptName" : "",
  "simulation" : "<true|false>",
  "nbMessagesMax" : "<n>",
 }

ScriptOutput:

 {
  "nbMessages" : "<n>",
 }
⚠️ **GitHub.com Fallback** ⚠️