<div>
                    I am pleased to announce the <b>alpha</b> release of rmqid 0.2.0.&nbsp;</div><div><br></div><div>rmqid is an <b>experimental</b> library designed to make interacting with RabbitMQ via python a more pleasant experience. It is BSD licensed and currently supports Python 2.6, 2.7 and 3.3. I do not consider this a replacement for Pika, which I fully intend to continue supporting, developing and maintaining. rmqid will most likely never support an asynchronous programming model and aims to create a low barrier to entry, sacrificing the more low-level API that Pika provides.</div><div><br></div><div><b><i>Please note that I do not consider the library stable and it is not intended for production use at this point.&nbsp;</i></b>I consider the code alpha quality and am releasing v0.2.0 for feedback and testing. There are numerous yet to be implemented features.</div><div><br></div><div>You can install rmqid via the python package index: <font face="Courier New">pip install rmqid</font></div><div><br></div><div>The github repo is located at https://github.com/gmr/rmqid and documentation is coming but currently not available. Be sure to checkout the README and the code in the GitHub repo for more information.</div><div><br></div><div><i>A few of the notable features:</i></div><div><br></div><div>The API for rmqid follows the AMQP specification contextually, yet does not always go back to the channel (from an API perspective) for communicating with RabbitMQ. Instead, the RPC methods are called on the Class objects themselves, only referencing the channel in the construction of the class object:</div><div><br></div><div><font face="Courier New">&nbsp; &nbsp; connection =&nbsp;rmqid.Connection('amqp://guest:guest@localhost:5672/%2F')</font></div><div><font face="Courier New">&nbsp; &nbsp;&nbsp;channel = connection.channel()</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">&nbsp; &nbsp;&nbsp;exchange = rmqid.Exchange(channel, 'test-exchange', 'topic')</font></div><div><font face="Courier New">&nbsp; &nbsp;&nbsp;exchange.bind()</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">&nbsp; &nbsp;&nbsp;queue = rmqid.Queue(channel, 'test-channel')</font></div><div><font face="Courier New">&nbsp; &nbsp;&nbsp;queue.declare()</font></div><div><font face="Courier New">&nbsp; &nbsp;&nbsp;queue.bind(exchange, 'test-routing-key')</font></div><div><font face="Courier New">&nbsp; &nbsp;&nbsp;print 'There are %i messages in the queue' % len(queue)</font></div><div><br></div><div>Connections and Channels can act as context managers:</div><div><br></div><div>&nbsp; &nbsp;&nbsp;<font face="Courier New">with rmqid.Connection('amqp://guest:guest@localhost:5672/%2F') as connection:</font></div><div><font face="Courier New">&nbsp; &nbsp; with connection.channel() as channel:</font></div><div><font face="Courier New">&nbsp; &nbsp; &nbsp; queue = rmqid.Queue(channel, 'my-test-queue')</font></div><div><font face="Courier New">&nbsp; &nbsp; &nbsp; queue.declare()</font></div><div><br></div><div>Messages are consumed using a Queue.consumer() provided context manager that provides a Consumer.next_message() generator method:</div><div><br></div><div><font face="Courier New">&nbsp; with queue.consumer() as consumer:</font></div><div><font face="Courier New">&nbsp; &nbsp; for message in consumer.next_message():</font></div><div><font face="Courier New">&nbsp; &nbsp; &nbsp; print message.body</font></div><div><font face="Courier New">&nbsp; &nbsp; &nbsp; message.ack()</font></div><div><font face="Courier New"><br></font></div><div>Messages are core objects in rmqid and interacted with like any other object, Basic.Publish is invoked by calling the publish method on the Message object itself:</div><div><font face="Courier New"><br></font></div><div><font face="Courier New">&nbsp; message_body = 'This is my message'</font></div><div><font face="Courier New">&nbsp; properties = {'app_id': 'test', 'content_type': 'text/plain', 'delivery_mode': 1}</font></div><div><font face="Courier New">&nbsp; message = rmqid.Message(channel, message_body, properties)</font></div><div><font face="Courier New">&nbsp; message.publish('test-exchange', 'routing-key')</font></div><div><br></div><div>If you're brave enough to play around with rmqid at this point, please submit bug reports and feature requests at&nbsp;<a href="https://github.com/gmr/rmqid/issues">https://github.com/gmr/rmqid/issues</a>.</div><div><br></div><div>Cheers,</div><div><br></div><div>Gavin</div>
                <div></div>