Stomp Parser and Utilities

Latest on Hackage:0.5.0

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

LGPL licensed by Tobias Schoofs
Maintained by tobias dot schoofs at gmx dot net

The Stomp Protocol specifies message-oriented interoperability. Applications connect to a message broker to send (publish) or receive (subscribe) messages through queues. Interoperating applications do not know the location or internal structure of each other. They see only each other's interfaces, i.e. the messages published and subscribed through the broker. Broker and application use a protocol based on the exchange of commands and other data packets, called frames. The Stompl library provides abstractions over Stomp frames and a Stomp frame parser. It does not implement a client or broker itself, but provides abstractions to libraries and programs doing so. It is used by the Stompl Queue library (stomp-queues). More documentation and a test suite can be found on The Stomp specification can be found at


0.5.0 Much More efficient body parsing when length is given

0.4.0 Bytestring instead of Bytestring.Char8

0.3.0 State Linkage Exception in license

0.2.0 The mime package (Codec.MIME) switched from String to Text in 0.4. We follow. Thanks, Dave!

0.1.1 Dependency for bytestring set to 0.10

0.1.0 Major changes:

      - Compliance with Stomp 1.2:

      - header keys and values are now escaped;
        this, in fact, was missing for Stomp 1.1.

      - header keys and values are not trimmed or padded;
        this, as well, should have been done for Stomp 1.1 already.
        Be aware that Stomp 1.0-like message headers
        may fail now, *e.g.*:
        *message : hello world*
        is not the same anymore as
        *message:hello world*

      - carriage return (ascii 13) plus line feed (ascii 10) 
        is now accepted as end-of-line;
        note that stompl never generates carriage return as end-of-line,
        the standard end-of-line remains line feed.

      - the Message frame may have an *ack* header 
        and should have when a message is sent 
        through a queue that requires explicit ack.

      - the mandatory header in the Ack frame is now *id*
        instead of *message-id*. It should correspond to *ack*
        in the message that is ack'd.
        Note that, to ease backward compatibility,
        Ack frames are generated with both: 
        an *id* and a *message-id* header.

      - a Stomp frame was added.
        The Stomp frame has exactly the same format
        as the Connect frame, but it is handled differently
        with respect to escaping: Connect header keys and values 
        are not escaped, Stomp header keys and values, however, are.

0.0.3 Major changes:

      - new attribute "ClientId" in Connect frame 
        for compatibility with ActiveMQ; 

      - all commands accept additional headers
        to ease adaptations to broker-specific features. 

0.0.2 Minor corrections and documentation

0.0.1 Initial Release

comments powered byDisqus