温馨提示×

RabbitMQ消息队列在Ubuntu上如何使用

小樊
36
2025-11-19 07:25:24
栏目: 智能运维

Ubuntu 上使用 RabbitMQ 的完整步骤

一 安装与启动

  • 更新软件源并安装:sudo apt update && sudo apt install -y rabbitmq-server
  • 启动服务并设置开机自启:sudo systemctl start rabbitmq-server && sudo systemctl enable rabbitmq-server
  • 验证运行状态:sudo rabbitmqctl status(看到节点与 Erlang 信息即为正常)

二 安全与用户管理

  • 创建管理员用户(示例用户名为admin,密码自定义):sudo rabbitmqctl add_user admin StrongPass!
  • 授予管理员标签:sudo rabbitmqctl set_user_tags admin administrator
  • 为默认虚拟主机授予权限:sudo rabbitmqctl set_permissions -p / admin “." ".” “.*”
  • 建议禁用默认的 guest 远程登录(仅本地可登录更安全):在配置文件 /etc/rabbitmq/rabbitmq.conf 中添加或修改:loopback_users.guest = false,然后重启服务:sudo systemctl restart rabbitmq-server

三 启用管理界面与访问

  • 启用管理插件:sudo rabbitmq-plugins enable rabbitmq_management
  • 访问地址:http://服务器IP:15672(默认账号密码为 guest/guest,建议创建新用户后禁用或删除默认账号)
  • 如启用防火墙,放行端口:sudo ufw allow 15672/tcp(云服务器还需在云安全组放行 15672

四 Python 快速上手示例

  • 安装客户端库:pip install pika
  • 生产者示例 send.py
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello', durable=True)
channel.basic_publish(
    exchange='',
    routing_key='hello',
    body='Hello RabbitMQ!',
    properties=pika.BasicProperties(delivery_mode=2),  # 消息持久化
)
print(" [x] Sent 'Hello RabbitMQ!'")
connection.close()
  • 消费者示例 receive.py
import pika

def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)
    ch.basic_ack(delivery_tag=method.delivery_tag)  # 手动确认

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello', durable=True)
channel.basic_qos(prefetch_count=1)  # 公平分发
channel.basic_consume(queue='hello', on_message_callback=callback)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
  • 运行顺序:先启动消费者 python receive.py,再运行生产者 python send.py

五 常用运维命令与排错

  • 常用命令
    • 查看状态:sudo rabbitmqctl status
    • 列出插件:sudo rabbitmq-plugins list
    • 启用插件:sudo rabbitmq-plugins enable <插件名>
    • 停止/重启服务:sudo systemctl stop|restart rabbitmq-server
    • 创建虚拟主机:sudo rabbitmqctl add_vhost myvhost
    • 设置虚拟主机权限:sudo rabbitmqctl set_permissions -p myvhost user “." ".” “.*”
  • 常见问题
    • 管理界面打不开:确认已启用 rabbitmq_management、防火墙放行 15672、服务已启动
    • 远程无法登录:默认 guest 仅本地可登录,创建新用户并分配权限,或在配置中禁用 guest 远程登录
    • 消息丢失:队列/消息设置为 durable=True,发布时设置 delivery_mode=2,消费者处理完成后进行 ack

0