Rabbitmq selectively receives messages
Sender:
Import pikaimport sysconnection = pika.BlockingConnection (pika.ConnectionParameters (host='localhost')) channel = connection.channel () channel.exchange_declare (exchange='direct_logs', exchange_type='direct') severity = sys.argv [1] if len (sys.argv) > 1 else 'info'message =' .join (sys.argv [2:]) or 'Hello Worldworker channels. Basic publishing (exchange='direct_logs', routing_key=severity Body=message) print ("[x] Sent% RGV% r"% (severity, message)) connection.close ()
Receiving end:
Import pikaimport sysconnection = pika.BlockingConnection (pika.ConnectionParameters (host='localhost')) channel = connection.channel () channel.exchange_declare (exchange='direct_logs' Exchange_type='direct') result = channel.queue_declare (exclusive=True) queue_name = result.method.queueseverities = sys.argv [1:] if not severities: sys.stderr.write ("Usage:% s [info] [warning] [error]\ n"% sys.argv [0]) sys.exit (1) for severity in severities: channel.queue_bind (exchange='direct_logs', queue=queue_name) Routing_key=severity) print ('[*] Waiting for logs. To exit press CTRL+C') def callback (ch, method, properties, body): print ("[x]% properties% r"% (method.routing_key, body)) channel.basic_consume (callback, queue=queue_name, no_ack=True) channel.start_consuming ()