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
- 版本匹配提醒:部署前请对照官方兼容矩阵选择 Erlang 与 RabbitMQ 版本,避免不兼容导致异常。
三 客户端连接方式
- 命令行快速连通性测试(使用 amqp-tools):
- 安装:yum/apt 安装 amqp-tools
- 发送测试消息:
amqp-publish -u amqp://admin:admin123@<服务器IP>:5672/myvhost -r test.queue -p -b “hello”
- 消费测试消息:
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 查找并释放占用进程后再启动。