在Ubuntu 18.04中安装RabbitMQ Server

安装Erlang/OTP

导入Erlang GPG Key

wget -O- https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc | sudo apt-key add -

添加Erlang源

echo "deb https://packages.erlang-solutions.com/ubuntu bionic contrib" | sudo tee /etc/apt/sources.list.d/rabbitmq.list

安装erlang

sudo apt update
sudo apt -y install erlang

安装 RabbitMQ Server

导入Key

wget -O- https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc | sudo apt-key add -
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -

添加源

echo "deb https://dl.bintray.com/rabbitmq/debian $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list

安装 RabbitMQ

sudo apt update
sudo apt -y install rabbitmq-server

启动服务

使用Init

sudo update-rc.d rabbitmq-server defaults
sudo service rabbitmq-server start
sudo service rabbitmq-server stop

使用Systemctl

sudo systemctl enable rabbitmq-server
sudo systemctl start rabbitmq-server
sudo systemctl stop rabbitmq-server

创建管理账户

rabbitmq 默认账户用户名密码均为guest,只可以本地访问,你可以通过以下命令创建自己的账户

sudo rabbitmqctl add_user admin StrongPassword 
sudo rabbitmqctl set_user_tags admin administrator
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

设置RabbitMQ Web管理控制

sudo rabbitmq-plugins enable rabbitmq_management

RabbitMQ页面的端口为15672,通过前一步用户密码登录访问。

# 查看端口是否监听
ss -tunelp | grep 15672

防火墙开启

sudo ufw allow proto tcp from any to any port 5672,15672

RabbitMQ 群集设置

参考How to Configure RabbitMQ Cluster on Ubuntu 18.04 LTS

维护插件

安装插件

rabbitmq-plugins enable rabbitmq_management

查看安装的插件

sudo rabbitmq-plugins list

RabbitMQ 用户管理命令

Delete User:

rabbitmqctl delete_user user

Change User Password:

rabbitmqctl change_password user strongpassword

Create new Virtualhost:

rabbitmqctl add_vhost /my_vhost

List available Virtualhosts:

rabbitmqctl list_vhosts

Delete a virtualhost:

rabbitmqctl delete_vhost /myvhost

Grant user permissions for vhost:

rabbitmqctl set_permissions -p /myvhost user ".*" ".*" ".*"

List vhost permissions:

rabbitmqctl list_permissions -p /myvhost

To list user permissions:

rabbitmqctl list_user_permissions user

Delete user permissions:

rabbitmqctl clear_permissions -p /myvhost user

The next article to read is:

How to Backup and Restore RabbitMQ Data & Configurations

To install RabbitMQ on CentOS 7 / CentOS 6 server, see:

Installing RabbitMQ on CentOS 6 and CentOS 7

其他

名词解释

Broker: 简单来说就是消息队列服务器实体。
Exchange: 消息交换机,它指定消息按什么规则,路由到哪个队列。
Queue: 消息队列载体,每个消息都会被投入到一个或多个队列。
Binding: 绑定,它的作用就是把exchange和queue按照路由规则绑定起来。
Routing Key: 路由关键字,exchange根据这个关键字进行消息投递。
vhost: 虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。
producer: 消息生产者,就是投递消息的程序。
consumer: 消息消费者,就是接受消息的程序。
channel: 消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。交换机的主要作用是接收相应的消息并且绑定到指定的队列.交换机有四种类型,分别为Direct,topic,headers,FanoutDirect: 处理路由键。需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。这是一个完整的匹配。如果一个队列绑定到该交换机上要求路由键 “demo”,则只有被标记为“demo”的消息才被转发,不会转发demo.ooo,也不会转发test.123,只会转发demo。 Topic: 转发信息主要是依据通配符,将路由键和某模式进行匹配。此时队列需要绑定要一个模式上。符号“#”匹配一个或多个词,符号“”匹配不多不少一个词。因此“audit.#”能够匹配到“audit.irs.corporate”,但是“audit.” 只会匹配到“audit.irs”。 Headers: 根据一个规则进行匹配,在消息队列和交换机绑定的时候会指定一组键值对规则,而发送消息的时候也会指定一组键值对规则,当两组键值对规则相匹配的时候,消息会被发送到匹配的消息队列中. Fanout**: 路由广播的形式,将会把消息发给绑定它的全部队列,即便设置了key,也会被忽略.

喜欢博主的文章可以适当打赏哟!!!
0%