amqp icon indicating copy to clipboard operation
amqp copied to clipboard

AMQP Prototyping

This project contains a partial prototype of AMQP 1-0 draft. This currently includes relatively complete components for framing, codec, connection, session, and link endpoints, as well as a very simple broker, client library, and send/recv utilities.

Getting Started:

  1. First run the broker, passing the names of your queues on the command line:

    ./broker queue-a queue-b queue-c ...

  2. Run the send program to send a message:

    ./send queue-a this is a test

  3. Run the recv program to receive a message:

    ./recv queue-a

  4. Use the --help option for each of the above programs to explore in more depth. All of the above programs support the -t/--trace option which may be used to print a protocol trace:

    ./send -t raw queue-a trace raw bytes ./send -t frm queue-b trace operations before/after encode/decode ./send -t "raw frm err" queue-c trace everything

Files:

broker -- A prototype broker: ./broker --help

recv -- A client used to receive messages: ./recv --help

send -- A client used to send messages: ./send --help

client.py -- A simple client library.

codec.py -- An implementation of the AMQP type system.

composite.py -- Base class for composite types and utilities for loading composite type definitions from the xml.

concurrency.py -- Concurrency utilities.

connection.py -- An implementation of an AMQP connection endpoint.

example-nodes -- Example node configurations for use with the -n option of the broker.

framing.py -- An implementation of the AMQP framing layer.

link.py -- An implementation of an AMQP link endpoint.

messaging.py -- An implementation of the AMQP messaging layer.

messaging.xml -- Definitions from the AMQP messaging specification.

mllib/ -- An XML parsing library used to load type definitions.

protocol.py -- Classes representing the types defined by the protocol specification.

README -- This file.

queue.py -- A simple AMQP queue implementation.

rendered-nodes -- Example config file for rendered nodes.

selector.py -- A simple I/O driver.

session.py

test.py -- Some informal test code.

TODO -- List of outstanding tasks.

transport.xml -- Definitions from the AMQP transport specification.

types.xml -- Definitions from the AMQP types specification. This includes encoding and type definitions used by codec.py.

util.py -- Common utilities.

widgets.py -- Cairo widgets for rendering nodes.

window.py -- Thread that manages gtk window and cairo surface.