Skip to content
/ mooq Public

An asyncio compatible library for interacting with a RabbitMQ AMQP broker

License

Notifications You must be signed in to change notification settings

jeremyarr/mooq

Repository files navigation

image

image

image

image

image

image

image

mooq is an asyncio compatible library for interacting with a RabbitMQ AMQP broker.

Features

  • Uses asyncio. No more callback hell.
  • Simplified and pythonic API to RabbitMQ
  • Built on top of the proven pika library
  • Comes with an in memory broker for unit testing projects that depend on RabbitMQ

Get It Now

$ pip install mooq

Just mooq it

Creating a connection:

conn = await mooq.connect(
            host="localhost",
            port=5672, 
            broker="rabbit"
            )

Creating a channel of the connection:

chan = await conn.create_channel()

Registering a producer:

await chan.register_producer(
        exchange_name="log",
        exchange_type="direct")

Registering a consumer and associated callback:

async def yell_it(resp):
    print(resp['msg'].upper())

await chan.register_consumer( 
        exchange_name="log", 
        exchange_type="direct",
        routing_keys=["greetings","goodbyes"],
        callback = yell_it)

Publishing a message:

await chan.publish(exchange_name="log",
                   msg="Hello World!",
                   routing_key="greetings")

Process messages asynchronously, running associated callbacks:

loop = asyncio.get_event_loop()
loop.create_task(conn.process_events())

Project Links

License

MIT licensed. See the bundled LICENSE file for more details.