layout: default_md title: REST protocols title-class: page-title-activemq5 type: activemq5

Developers > Developer Guide > Design Documents > REST protocols

There are many ways to map JMS to REST...

Crappy non-REST

Send via

POST /queue/Destination

Consume

GET /queue/Destination

This is bad as the GET is not idempotent. We can add a user ID or use a cookie

GET /queue/Destination?jsessionId=....

though a caching proxy may keep returning the same message

Simple REST using 1 at a time delivery

Subscribe via

POST /subscribe/consumerId/Destination  
POST /unsubscribe/consumerId/Destination

Then get messges via

POST /nextMessageForMe/consumerId

If you want to acknowledge messages you then

POST /ack/consumerId/messageId

Batch message REST

POST lockNextMessage/consumerId?max=10 

-> give back up to 10 message URLs

GET message/consumerId/messageId

acknowledge them via

DELETE /consumerId/messages/messageId

Further options...

You can include ACK messages inside the POST; so the 2nd POST could include the ACKs - also you could return the batch of messages as well.