Docker启动RabbitMQ以及使用方式详解
RabbitMQ是一个开源的消息队列系统,支持多种消息传递协议。在Docker中,可以使用RabbitMQ的官方镜像来快速启动RabbitMQ容器,并使用RabbitMQ的功能。本文将详细讲解Docker启动RabbitMQ以及使用方式,并提供两个示例说明。
步骤一:安装Docker
在Docker官网下载页面(https://www.docker.com/products/docker-desktop)下载适合自己系统的Docker安装包,并按照提示进行安装。
步骤二:启动RabbitMQ容器
使用以下命令启动RabbitMQ容器:
docker run -d --hostname my-rabbit --name some-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3-management
在上述命令中,-d
表示在后台运行容器,--hostname my-rabbit
表示设置容器的主机名为 my-rabbit
,--name some-rabbit
表示设置容器的名称为 some-rabbit
,-p 5672:5672
表示将容器的 5672
端口映射到主机的 5672
端口,-p 15672:15672
表示将容器的 15672
端口映射到主机的 15672
端口,rabbitmq:3-management
表示使用RabbitMQ官方镜像,并启用RabbitMQ的Web管理界面。
步骤三:访问RabbitMQ的Web管理界面
在浏览器中访问 http://localhost:15672
,输入默认的用户名和密码 guest/guest
,即可进入RabbitMQ的Web管理界面。
示例一:使用RabbitMQ实现消息的发送和接收
使用以下代码实现消息的发送和接收:
import pika
# 连接RabbitMQ服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# 声明队列
channel.queue_declare(queue='hello')
# 发送消息
channel.basic_publish(exchange='', routing_key='hello', body='Hello, World!')
print(" [x] Sent 'Hello, World!'")
# 接收消息
def callback(ch, method, properties, body):
print(" [x] Received %r" % body)
channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
在上述代码中,connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
表示连接RabbitMQ服务器,channel.queue_declare(queue='hello')
表示声明一个名为 hello
的队列,channel.basic_publish(exchange='', routing_key='hello', body='Hello, World!')
表示发送一条消息到队列 hello
,channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
表示从队列 hello
接收消息,并调用 callback
函数处理消息。
示例二:使用RabbitMQ实现消息的发布和订阅
使用以下代码实现消息的发布和订阅:
import pika
# 连接RabbitMQ服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# 声明交换机
channel.exchange_declare(exchange='logs', exchange_type='fanout')
# 发布消息
channel.basic_publish(exchange='logs', routing_key='', body='Hello, World!')
print(" [x] Sent 'Hello, World!'")
# 订阅消息
result = channel.queue_declare(queue='', exclusive=True)
queue_name = result.method.queue
channel.queue_bind(exchange='logs', queue=queue_name)
def callback(ch, method, properties, body):
print(" [x] Received %r" % body)
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()
在上述代码中,channel.exchange_declare(exchange='logs', exchange_type='fanout')
表示声明一个名为 logs
的交换机,channel.basic_publish(exchange='logs', routing_key='', body='Hello, World!')
表示发布一条消息到交换机 logs
,result = channel.queue_declare(queue='', exclusive=True)
表示声明一个随机的、独占的、自动删除的队列,channel.queue_bind(exchange='logs', queue=queue_name)
表示将队列绑定到交换机 logs
,channel.basic_consume(queue=queue_name, on_message_callback=callback, auto_ack=True)
表示从队列 queue_name
订阅消息,并调用 callback
函数处理消息。
总结
本文详细讲解了Docker启动RabbitMQ以及使用方式,并提供了两个示例说明:使用RabbitMQ实现消息的发送和接收,以及使用RabbitMQ实现消息的发布和订阅。在使用RabbitMQ时,需要根据实际需求选择合适的特性,并注意消息的可靠性和正确性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:docker启动rabbitmq以及使用方式详解 - Python技术站