RabbitMQ消息队列Ubuntu使用教程
一、安装前准备
RabbitMQ是基于Erlang语言开发的消息队列中间件,因此在Ubuntu上安装前需先安装Erlang运行环境。此外,建议更新系统软件包以确保兼容性。
二、安装Erlang
- 添加RabbitMQ官方GPG密钥(用于验证软件包完整性):
curl -fsSL https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc | sudo gpg --dearmor -o /usr/share/keyrings/rabbitmq.gpg - 添加RabbitMQ Erlang源(指定Erlang版本,如23.x):
echo "deb [signed-by=/usr/share/keyrings/rabbitmq.gpg] https://dl.bintray.com/rabbitmq-erlang/debian focal erlang-23.x" | sudo tee /etc/apt/sources.list.d/rabbitmq-erlang.list - 安装Erlang:
sudo apt update && sudo apt install -y erlang - 验证Erlang安装:
若输出Erlang版本信息(如erl -versionErlang/OTP 23.x),则表示安装成功。
三、安装RabbitMQ Server
- 添加RabbitMQ官方源:
echo "deb [signed-by=/usr/share/keyrings/rabbitmq.gpg] https://dl.bintray.com/rabbitmq/debian focal main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list - 安装RabbitMQ Server:
sudo apt update && sudo apt install -y rabbitmq-server - 启动RabbitMQ服务并设置开机自启:
sudo systemctl start rabbitmq-server sudo systemctl enable rabbitmq-server - 检查服务状态:
若显示sudo systemctl status rabbitmq-serveractive (running),则表示服务已正常运行。
四、配置RabbitMQ
1. 启用Web管理插件
RabbitMQ自带Web管理界面,默认监听15672端口,需手动启用:
sudo rabbitmq-plugins enable rabbitmq_management
启用后,可通过浏览器访问http://<服务器IP>:15672查看管理界面。
2. 创建管理员用户(替换默认guest)
默认的guest用户仅允许本地访问(localhost),生产环境需创建新用户并授予权限:
# 创建用户(用户名:admin,密码:yourpassword)
sudo rabbitmqctl add_user admin yourpassword
# 设置用户角色为管理员(administrator)
sudo rabbitmqctl set_user_tags admin administrator
# 授予用户所有权限(对虚拟主机/的读、写、配置权限)
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
此后,可使用admin/yourpassword登录管理界面。
3. 配置防火墙(若启用)
若Ubuntu启用了ufw防火墙,需放行RabbitMQ的AMQP(5672)和管理(15672)端口:
sudo ufw allow 5672/tcp # AMQP协议端口(生产者/消费者通信)
sudo ufw allow 15672/tcp # Web管理界面端口
sudo ufw reload
五、基础操作命令
1. 用户管理
- 列出所有用户:
sudo rabbitmqctl list_users - 删除用户:
sudo rabbitmqctl delete_user
2. 虚拟主机(VHost)管理
虚拟主机用于隔离不同业务的队列和交换机:
- 创建虚拟主机:
sudo rabbitmqctl add_vhost(如/my_vhost) - 删除虚拟主机:
sudo rabbitmqctl delete_vhost - 授权用户访问虚拟主机:
sudo rabbitmqctl set_permissions -p".*" ".*" ".*"
3. 队列与交换机操作
- 列出所有队列:
sudo rabbitmqctl list_queues - 列出所有交换机:
sudo rabbitmqctl list_exchanges - 清除队列数据(谨慎使用):
sudo rabbitmqctl purge_queue
六、测试消息收发(Python示例)
1. 安装pika库(RabbitMQ Python客户端)
pip install pika
2. 生产者(发送消息)
创建producer.py文件:
import pika
# 连接RabbitMQ服务器(本地默认)
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# 声明队列(若不存在则创建,durable=True表示队列持久化)
channel.queue_declare(queue='hello', durable=True)
# 发送消息(delivery_mode=2表示消息持久化)
channel.basic_publish(
exchange='',
routing_key='hello',
body='Hello, RabbitMQ!',
properties=pika.BasicProperties(delivery_mode=2)
)
print(" [x] Sent 'Hello, RabbitMQ!'")
connection.close()
运行生产者:python producer.py
3. 消费者(接收消息)
创建consumer.py文件:
import pika
# 连接RabbitMQ服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# 声明队列(确保队列存在)
channel.queue_declare(queue='hello', durable=True)
# 定义消息处理回调函数
def callback(ch, method, properties, body):
print(f" [x] Received {body.decode()}")
# 设置公平分发(避免消费者过载)
channel.basic_qos(prefetch_count=1)
# 开始监听队列(auto_ack=False表示手动确认消息)
channel.basic_consume(
queue='hello',
on_message_callback=callback,
auto_ack=False
)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
运行消费者:python consumer.py
当生产者发送消息后,消费者将打印接收到的消息。
七、安全加固建议
- 禁用默认guest用户(仅允许本地访问):
sudo rabbitmqctl delete_user guest - 配置SSL加密(可选,高级安全需求):
在/etc/rabbitmq/rabbitmq.conf中添加SSL配置(需提前生成证书):重启服务生效:listeners.ssl.default = 5671 ssl_options.cacertfile = /path/to/ca_certificate.pem ssl_options.certfile = /path/to/server_certificate.pem ssl_options.keyfile = /path/to/server_key.pem ssl_options.verify = verify_peer ssl_options.fail_if_no_peer_cert = truesudo systemctl restart rabbitmq-server
通过以上步骤,您已完成RabbitMQ在Ubuntu上的安装、配置及基础使用。可根据实际需求扩展高级特性(如交换机类型、路由规则、集群部署等)。
以上就是关于“RabbitMQ消息队列Ubuntu使用教程”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm