温馨提示×

RabbitMQ Linux客户端怎么连接

小樊
40
2025-12-18 16:06:26
栏目: 智能运维

Linux 客户端连接 RabbitMQ 实操指南

一 前置检查

  • 确认服务端已启动并监听 5672(AMQP)与 15672(管理插件)端口;云服务器还需在安全组放行对应端口。
  • 建议创建专用用户与 vhost,并按需授予权限,避免使用仅限本地的 guest 账户进行远程连接。
  • 注意 Erlang 与 RabbitMQ 版本必须匹配,否则可能出现启动或插件启用失败等问题。

二 服务端必要配置

  • 启用管理插件(便于创建用户、vhost 与权限校验):
    rabbitmq-plugins enable rabbitmq_management
  • 创建管理员用户与 vhost 并赋权(示例用户 admin / admin123,vhost /myvhost):
    rabbitmqctl add_user admin admin123
    rabbitmqctl set_user_tags admin administrator
    rabbitmqctl add_vhost /myvhost
    rabbitmqctl set_permissions -p /myvhost admin “." ".” “.*”
  • 远程访问与端口:
    • 默认仅本机可登录的 guest 用户如需远程使用,需在配置文件 /etc/rabbitmq/rabbitmq.config 中设置:
      [{rabbit, [{loopback_users, []}]}].
      注意该文件需以英文句点“.”结束,修改后重启服务。
    • 开放防火墙端口(firewalld):
      firewall-cmd --zone=public --add-port=5672/tcp --permanent
      firewall-cmd --zone=public --add-port=15672/tcp --permanent
      firewall-cmd --reload
  • 版本匹配提醒:部署前请对照官方兼容矩阵选择 ErlangRabbitMQ 版本,避免不兼容导致异常。

三 客户端连接方式

  • 命令行快速连通性测试(使用 amqp-tools):
    1. 安装:yum/apt 安装 amqp-tools
    2. 发送测试消息:
      amqp-publish -u amqp://admin:admin123@<服务器IP>:5672/myvhost -r test.queue -p -b “hello”
    3. 消费测试消息:
      amqp-consume -u amqp://admin:admin123@<服务器IP>:5672/myvhost -r test.queue -f ‘| body : %b |’
  • 程序代码示例(Python,pika):
    import pika
    creds = pika.PlainCredentials('admin', 'admin123')
    params = pika.ConnectionParameters(host='<服务器IP>', port=5672,
                                     virtual_host='/myvhost', credentials=creds)
    conn = pika.BlockingConnection(params)
    ch = conn.channel()
    ch.queue_declare(queue='test.queue', durable=True)
    ch.basic_publish(exchange='', routing_key='test.queue',
                      body='Hello from Linux client',
                      properties=pika.BasicProperties(delivery_mode=2))
    print("Sent message")
    conn.close()
    
  • 常用连接串模板:
    • amqp://用户名:密码@主机IP:5672/虚拟主机
    • 示例:amqp://admin:admin123@192.168.10.20:5672/myvhost

四 常见故障排查

  • 连接被拒绝或超时:
    • 核对 IP/端口/虚拟主机 是否正确,服务端是否在 5672 监听。
    • 云主机需同时放行 安全组系统防火墙 的 5672 端口。
  • 认证失败:
    • 确认用户名、密码正确,且该用户对目标 vhost 具备配置/写/读权限(set_permissions)。
  • 插件或启动异常:
    • 检查 Erlang 与 RabbitMQ 版本匹配;必要时查看日志定位问题。
  • 端口占用:
    • 若启动报错涉及 25672 等端口被占用,可用 ss/ps 查找并释放占用进程后再启动。

0