1. 安装RabbitMQ

编写docker-compose.yml文件

version: '3.8'
services:
  rabbitmq:
    image: rabbitmq:management
    container_name: rabbitmq_container
    ports:
      - "5672:5672"
      - "15672:15672"
    volumes:
      - ./rabbitmq_data:/var/lib/rabbitmq
    environment:
      RABBITMQ_DEFAULT_USER: guest
      RABBITMQ_DEFAULT_PASS: guest

2. RabbitMQ 生产数据

import pika


def send_message():
    # Connection parameters including authentication
    credentials = pika.PlainCredentials('guest', 'guest')
    parameters = pika.ConnectionParameters(host='10.254.2.186', credentials=credentials)

    # Establish a connection
    connection = pika.BlockingConnection(parameters)
    channel = connection.channel()

    # Declare a queue
    queue_name = 'example_queue'
    channel.queue_declare(queue=queue_name)

    # Publish a message
    message = "Hello, RabbitMQ!"
    channel.basic_publish(exchange='', routing_key=queue_name, body=message)

    print(" [x] Sent %r" % message)
    connection.close()


if __name__ == '__main__':
    send_message()

3. RabbitMQ 消费数据

import pika


def receive_messages():
    # Connection parameters including authentication
    credentials = pika.PlainCredentials('guest', 'guest')
    parameters = pika.ConnectionParameters(host='10.254.2.186', credentials=credentials)

    # Establish a connection
    connection = pika.BlockingConnection(parameters)
    channel = connection.channel()

    # Declare a queue (this step is optional since it was declared by the sender)
    queue_name = 'example_queue'
    channel.queue_declare(queue=queue_name)

    def callback(ch, method, properties, body):
        print(" [x] Received %r" % body)

    # Start consuming messages
    channel.basic_consume(queue=queue_name, on_message_callback=callback, auto_ack=True)

    print(' [*] Waiting for messages. To exit press CTRL+C')
    channel.start_consuming()


if __name__ == '__main__':
    receive_messages()