ubuntu

RabbitMQ消息队列Ubuntu使用教程

小樊
43
2025-08-30 04:01:54
栏目: 智能运维

RabbitMQ消息队列Ubuntu使用教程

一、安装前准备

RabbitMQ是基于Erlang语言开发的消息队列中间件,因此在Ubuntu上安装前需先安装Erlang运行环境。此外,建议更新系统软件包以确保兼容性。

二、安装Erlang

  1. 添加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
    
  2. 添加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
    
  3. 安装Erlang
    sudo apt update && sudo apt install -y erlang
    
  4. 验证Erlang安装
    erl -version
    
    若输出Erlang版本信息(如Erlang/OTP 23.x),则表示安装成功。

三、安装RabbitMQ Server

  1. 添加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
    
  2. 安装RabbitMQ Server
    sudo apt update && sudo apt install -y rabbitmq-server
    
  3. 启动RabbitMQ服务并设置开机自启
    sudo systemctl start rabbitmq-server
    sudo systemctl enable rabbitmq-server
    
  4. 检查服务状态
    sudo systemctl status rabbitmq-server
    
    若显示active (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. 用户管理

2. 虚拟主机(VHost)管理

虚拟主机用于隔离不同业务的队列和交换机:

3. 队列与交换机操作

六、测试消息收发(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
当生产者发送消息后,消费者将打印接收到的消息。

七、安全加固建议

  1. 禁用默认guest用户(仅允许本地访问):
    sudo rabbitmqctl delete_user guest
    
  2. 配置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 = true
    
    重启服务生效:sudo systemctl restart rabbitmq-server

通过以上步骤,您已完成RabbitMQ在Ubuntu上的安装、配置及基础使用。可根据实际需求扩展高级特性(如交换机类型、路由规则、集群部署等)。

0
看了该问题的人还看了