#安装时会默认安装erlang相关依赖包。
#加入系统自动启动并立即运行rabbit
systemctl enable rabbitmq-server.service --now
## 2. 配置hosts文件
在所有节点上编辑hosts文件,将各节点的IP地址和主机名映射到一起。这样可以通过主机名进行通信,而不是依赖IP地址。
这个就不在讲了,直接编辑 /etc/hosts这个文件即可
个人主机内容参考如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
110.110.10.5 host1
110.110.10.6 host2
110.110.10.7 host3
## 3. 配置rabbit集群
一般情况下一个节点的rabbit也差不多够用了,但为了稳定性使用高可用集群还是有必要的,配置集群可以直接编辑每个节点上的RabbitMQ配置文件,可以在/etc/rabbitmq/rabbitmq.conf中修改。常见的配置项:
# 节点名称
node_name = rabbit@node1
# 集群节点列表
cluster_nodes = {['rabbit@node1', 'rabbit@node2', 'rabbit@node3'], disc}
# Cookie值,用于节点间通信
erlang_cookie = abcde12345fghij
还有自定义rabbit的ip,各类服务端口,还有ssl等高级配置在这里不说了。
注意,这些配置项必须在所有节点上保持一致。
### 命令方式配置集群
**默认情况下rabbit会直接获取hostname作为节点名,所以不用去配置文件中修改,这里主要讲使用命令直接配置和启动rabbit集群。**
for i in {host1,host2,host3};do ssh $i systemctl stop rabbitmq-server;done
for i in {host1,host2,host3};do scp /var/lib/rabbitmq/.erlang.cookie $i:/var/lib/rabbitmq/.erlang.cookie;done
for i in {host1,host2,host3};do ssh $i chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie;done
for i in {host1,host2,host3};do ssh $i chmod 400 /var/lib/rabbitmq/.erlang.cookie;done
for i in {host1,host2,host3};do ssh $i systemctl start rabbitmq-server;done
###节点加入集群,从拟定的主节点以外的其他节点操作,新加入节点操作也一样。;
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@host1
rabbitmqctl start_app
rabbitmqctl cluster_status
systemctl stop rabbitmq-server
scp host1:/var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/.erlang.cookie
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 400 /var/lib/rabbitmq/.erlang.cookie
systemctl start rabbitmq-server
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@host1
rabbitmqctl start_app
### 读写测试
写入和读取测试:
python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(‘localhost’))
channel = connection.channel()
queue_name = ‘test_queue’
channel.queue_declare(queue=queue_name)
channel.basic_publish(exchange=‘’,
routing_key=queue_name,
body=‘Hello World!’)
print(" [x] Sent ‘Hello World!’")
method_frame, header_frame, body = channel.basic_get(queue=queue_name, auto_ack=True)
if method_frame:
print(" [x] Received %r" % body)
else:
print(‘No message returned’)
connection.close()
### 在Node.js中使用RabbitMQ
在Node.js中使用RabbitMQ需要先安装amqplib库,可以通过npm进行安装:
npm install amqplib
##以下是使用RabbitMQ的基本步骤:
##建立与RabbitMQ服务器的连接
const amqp = require(‘amqplib’);
amqp.connect(‘amqp://localhost’).then(function(conn) {
//执行后续操作
});
###创建通道(channel)
conn.createChannel().then(function(ch) {
//执行后续操作
});
#发送消息
const queueName = “hello”;
ch.assertQueue(queueName, { durable: false });
ch.sendToQueue(queueName, new Buffer(‘Hello World!’));
const queueName = “hello”;
ch.assertQueue(queueName, { durable: false });
ch.consume(queueName, function(msg) {
console.log(“Received message: %s”, msg.content.toString());
}, { noAck: true });
#######完整示例代码:
const amqp = require(‘amqplib’);
amqp.connect(‘amqp://localhost’).then(function(conn) {
conn.createChannel().then(function(ch) {
const queueName = “hello”;
ch.assertQueue(queueName, { durable: false });
ch.sendToQueue(queueName, new Buffer(‘Hello World!’));
ch.assertQueue(queueName, { durable: false });
ch.consume(queueName, function(msg) {
console.log("Received message: %s", msg.content.toString());
}, { noAck: true });
});
}).catch(function(err) {
console.log(‘Error:’, err);
});
##
## 4. 常用管理命令
#添加新用户
sudo rabbitmqctl add_user username password
#删除用户
sudo rabbitmqctl delete_user username
#分配用户权限
sudo rabbitmqctl set_permissions -p / virtual-hostname ‘username’ ‘.’ '.’ ‘.*’
#查看用户列表
sudo rabbitmqctl list_users
#查看队列列表
sudo rabbitmqctl list_queues
#查看交换机列表
sudo rabbitmqctl list_exchanges
#查看绑定列表
sudo rabbitmqctl list_bindings
#查看 vhost 列表
sudo rabbitmqctl list_vhosts
#查看某个 vhost 的权限控制列表
sudo rabbitmqctl list_permissions -p virtual-hostname
#查看 RabbitMQ 服务器信息
sudo rabbitmqctl status
## 5. 设置集群policy设置
##语句格式
rabbitmqctl set_policy [-p ]
rabbitmqctl clear_policy [-p ]
rabbitmqctl list_policies [-p ]
rabbitmqctl set_policy ha-all ‘^(?!amq.).*’ ‘{“ha-mode”: “all”}’;
rabbitmqctl set_policy max-length-1000 “^my-queue$” ‘{“max-length”:1000}’ --apply-to queues
## 6. 启用web面板插件
rabbitmq-plugins enable rabbitmq_management
##在本服务器或者同网段其他主机打开浏览器即可访问rabbitmq集群状态和管理页面

使用前面命令添加用户并设置为管理员即可登陆web界面。

## 7. rabbitmq配置文件参考
###一般情况下不用在这里修改配置文件,但自定义参数的时候还是很有用的。
cat /etc/rabbitmq/rabbitmq.conf
####这下面的5672,5671如果已经被占用时或者为了安全考虑可修改为其他端口,在服务应用时也需要调整成新的端口
###这里设置集群,所有节点必须保持一致,当然也可以按照前面命令的方式进行设置
最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!
给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以点击这里获取!
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
10
最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!
给大家整理的视频资料:
[外链图片转存中…(img-9Cdfvy2U-1714543526215)]
给大家整理的电子书资料:
[外链图片转存中…(img-cYff8W3j-1714543526216)]
如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以点击这里获取!
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!