Examples¶
Direct¶
hello.py:
- Prints a ‘tick’ message every second and publishes messages to a RabbitMQ at the same time.
import mooq
import asyncio
import random
async def main():
conn = await mooq.connect(
host="localhost",
port=5672,
broker="rabbit")
chan = await conn.create_channel()
await chan.register_producer(
exchange_name="in2com_log",
exchange_type="direct")
loop.create_task(tick_every_second())
loop.create_task(publish_randomly(chan))
async def tick_every_second():
cnt = 0
while True:
print("tick hello {}".format(cnt))
cnt = cnt + 1
await asyncio.sleep(1)
async def publish_randomly(chan):
while True:
await chan.publish(
exchange_name="in2com_log",
msg="Hello World!",
routing_key="greetings")
print("published!")
await asyncio.sleep(random.randint(1,10))
loop = asyncio.get_event_loop()
loop.create_task(main())
loop.run_forever()
loud.py:
- Prints a ‘tick’ message every second and processes messages from RabbitMQ at the same time.
import mooq
import asyncio
#the callback to run
async def yell_it(resp):
print(resp['msg'].upper())
async def main(loop):
conn = await mooq.connect(
host="localhost",
port=5672,
broker="rabbit")
chan = await conn.create_channel()
await chan.register_consumer(
exchange_name="in2com_log",
exchange_type="direct",
routing_keys=["greetings","goodbyes"],
callback = yell_it)
loop.create_task(tick_every_second())
loop.create_task(conn.process_events())
async def tick_every_second():
cnt = 0
while True:
print("tick loud {}".format(cnt))
cnt = cnt + 1
await asyncio.sleep(1)
loop = asyncio.get_event_loop()
loop.create_task(main(loop))
loop.run_forever()
Terminal 1:
$ python hello.py
tick hello 0
published!
tick hello 1
tick hello 2
published!
tick hello 3
tick hello 4
tick hello 5
published!
tick hello 6
Terminal 2:
$ python loud.py
tick loud 0
HELLO WORLD!
tick loud 1
tick loud 2
HELLO WORLD!
tick loud 3
tick loud 4
tick loud 5
HELLO WORLD!
tick loud 6