Nevado JMS is not 100% compliant,
but it's close.
Nevado creates a lot of JMS functionality itself, and hides the limitations of SQS where possible.
It was developed against version 1.1 of the specification, and we hope to update it to 2.0 when that becomes
final in 2013.
Full support for all JMS message types: TextMessage, ObjectMessage, MapMessage, StreamMessage, BytesMessage
Supports messages from other JMS providers
Both synchronous or asynchronous delivery
PTP Queues and Pub/Sub Topics
Temporary queues and topics
Client- or auto-acknowledgement of messages
Not Supported (yet)
True FIFO (SQS does not guarantee strict message order)
Expediting of high priority messages
Queue browsing (can still be accomplished through AWS console)
Topic groups / heirarchies
Extended Application Server Facilities (ConnectionConsumer)
SQS guarantees at-least-once delivery, whereas JMS requires once-and-only-once delivery.
In practice, duplicate
messages are very rare.
You can send millions of messages and never see a duplicate, but they are still a possibility and your
code needs to be able to handle them.
If this is a big issue for you, let us know. This could be prevented with
some additional magic in Nevado, but it's an edge case and hard to reliably recreate for testing,
so it's not covered it yet.