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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
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()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
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()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.