45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
|
"""Basic message consumer example"""
|
||
|
import functools
|
||
|
import logging
|
||
|
import pika
|
||
|
|
||
|
LOG_FORMAT = ('%(levelname) -10s %(asctime)s %(name) -30s %(funcName) '
|
||
|
'-35s %(lineno) -5d: %(message)s')
|
||
|
LOGGER = logging.getLogger(__name__)
|
||
|
|
||
|
logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT)
|
||
|
|
||
|
def on_message(chan, method_frame, _header_frame, body, userdata=None):
|
||
|
"""Called when a message is received. Log message and ack it."""
|
||
|
LOGGER.info('Userdata: %s Message body: %s', userdata, body)
|
||
|
chan.basic_ack(delivery_tag=method_frame.delivery_tag)
|
||
|
|
||
|
def main():
|
||
|
"""Main method."""
|
||
|
credentials = pika.PlainCredentials('guest', 'guest')
|
||
|
parameters = pika.ConnectionParameters('localhost', credentials=credentials)
|
||
|
connection = pika.BlockingConnection(parameters)
|
||
|
|
||
|
channel = connection.channel()
|
||
|
channel.exchange_declare(exchange="test_exchange",
|
||
|
exchange_type="direct",
|
||
|
passive=False,
|
||
|
durable=True,
|
||
|
auto_delete=False)
|
||
|
channel.queue_declare(queue="standard", auto_delete=True)
|
||
|
channel.queue_bind(queue="standard", exchange="test_exchange", routing_key="standard_key")
|
||
|
channel.basic_qos(prefetch_count=1)
|
||
|
|
||
|
on_message_callback = functools.partial(on_message, userdata='on_message_userdata')
|
||
|
channel.basic_consume(on_message_callback, 'standard')
|
||
|
|
||
|
try:
|
||
|
channel.start_consuming()
|
||
|
except KeyboardInterrupt:
|
||
|
channel.stop_consuming()
|
||
|
|
||
|
connection.close()
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|