Random Message Generation and Consumption in RabbitMQ

  • Share this:

Code introduction


This code defines a function to randomly generate messages and consume them from a RabbitMQ message queue. It first declares an exchange and a queue, then generates a random message and publishes it to the queue, and finally consumes messages from the queue and prints them out.


Technology Stack : This code uses the 'random' and 'kombu' packages. 'random' is used for generating random numbers, and 'kombu' is used for interacting with RabbitMQ message queue.

Code Type : Function

Code Difficulty :


                
                    
def random_queue_message_dequeue(queue_name):
    from random import randint
    from kombu import Connection, Exchange, Queue, Producer, Consumer

    def generate_random_message():
        return f"Message {randint(1, 100)}"

    def create_queue_connection():
        with Connection('amqp://guest:guest@localhost//') as conn:
            return conn

    def declare_queue(conn):
        exchange = Exchange(queue_name, type='direct')
        queue = Queue(queue_name, exchange, routing_key=queue_name)
        conn.channel().declare_exchange(exchange)
        conn.channel().declare_queue(queue)
        return queue

    def enqueue_message(queue):
        with Producer(conn) as producer:
            producer.publish(generate_random_message(), exchange=queue.exchange, routing_key=queue.name)

    def dequeue_message(queue):
        with Consumer(conn, queue=queue) as consumer:
            for message in consumer:
                print(f"Dequeued message: {message.body.decode()}")
                message.ack()

    queue = declare_queue(create_queue_connection())
    enqueue_message(queue)
    dequeue_message(queue)