1小时快速上手RabbitMQ(简介及安装过程)
RabbitMQ是一个开源的消息队列系统,支持多种消息传递协议。本文将详细讲解RabbitMQ的简介及安装过程,并提供两个示例说明。
RabbitMQ的简介
RabbitMQ是一个基于AMQP(Advanced Message Queuing Protocol)协议的消息队列系统,它可以实现不同应用程序之间的异步通信。RabbitMQ的架构包括生产者、消费者、队列、交换机和绑定。生产者将消息发送到交换机中,交换机根据绑定将消息路由到相应的队列中,消费者从队列中获取消息并进行处理。
RabbitMQ的安装
安装Erlang
RabbitMQ是基于Erlang语言开发的,因此需要先安装Erlang。
在Ubuntu系统中,可以使用以下命令安装Erlang:
sudo apt-get update
sudo apt-get install erlang
在CentOS系统中,可以使用以下命令安装Erlang:
sudo yum install erlang
安装RabbitMQ
在Ubuntu系统中,可以使用以下命令安装RabbitMQ:
sudo apt-get update
sudo apt-get install rabbitmq-server
在CentOS系统中,可以使用以下命令安装RabbitMQ:
sudo yum install rabbitmq-server
启动RabbitMQ
在Ubuntu系统中,可以使用以下命令启动RabbitMQ:
sudo service rabbitmq-server start
在CentOS系统中,可以使用以下命令启动RabbitMQ:
sudo systemctl start rabbitmq-server
配置RabbitMQ
在安装和启动RabbitMQ后,需要进行一些配置。
创建用户
可以使用以下命令创建一个名为 admin
的用户:
sudo rabbitmqctl add_user admin password
授权用户
可以使用以下命令将 admin
用户授权为管理员:
sudo rabbitmqctl set_user_tags admin administrator
创建虚拟主机
可以使用以下命令创建一个名为 my_vhost
的虚拟主机:
sudo rabbitmqctl add_vhost my_vhost
授权虚拟主机
可以使用以下命令将 admin
用户授权为 my_vhost
虚拟主机的管理员:
sudo rabbitmqctl set_permissions -p my_vhost admin ".*" ".*" ".*"
RabbitMQ的管理界面
RabbitMQ提供了一个Web管理界面,可以通过该界面查看RabbitMQ的状态、管理队列、交换机和绑定等。
在Ubuntu系统中,可以使用以下命令启用Web管理界面:
sudo rabbitmq-plugins enable rabbitmq_management
在CentOS系统中,可以使用以下命令启用Web管理界面:
sudo rabbitmq-plugins enable rabbitmq_management
启用Web管理界面后,可以通过浏览器访问 http://localhost:15672
来打开RabbitMQ的管理界面。使用刚才创建的 admin
用户登录即可。
示例一:使用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
,.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
函数处理消息。
总结
本文详细讲解了RabbitMQ的简介及安装过程,并提供了两个示例说明:使用RabbitMQ实现消息的发送和接收,以及使用RabbitMQ实现消息的发布和订阅。在使用RabbitMQ时,需要根据实际需求选择合适的特性,并注意消息的可靠性和正确性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:1小时快速上手RabbitMQ(简介及安装过程) - Python技术站