这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情
前言
大家好,我是程序猿小白 GW_gw,很高兴能和大家一起学习进步。
以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。
摘要
本文主要带大家如何配置RabbitMQ的集群并在SpringBoot中使用。
配置镜像集群
1. 环境配置
启动多台linux虚拟机,如果只有一台可以快速克隆出多台即可。
如果内存足够建议使用完全克隆。
创建完虚拟机之后进行具体的环境配置。
- 修改hosts文件,配置ip镜像。
- 重启机器
- 互ping测试
- 启动rabbitmq
- 修改.erlang.cookie文件,保证多台机器之间该文件的文件内容相同。
关闭防火墙,确保两台机器相互ping通。
后台启动rabbitmq
rabbitmq-server satrt &
给RabbitMQ添加用户
rabbitmqctl add_user admin 123456
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
rabbitmqctl set_user_tags admin administrator
将其中一台的文件复制到另外一台机器上。
scp /var/lib/rabbitmq/.erlang.cookie 192.168.44.252:/var/lib/rabbitmq
2. 组建集群
重启rabbitmq
rabbitmqctl stop
rabbitmq-server start &
将某个rabbitmq加入到某个服务器节点。
//停止应用
rabbitmqctl stop_app
//加入节点(将A加入到B中)
rabbitmqctl join_cluster rabbit@B
//启动应用
rabbitmqctl start_app
查看节点状态:
rabbitmqctl cluster_status
3. 在Springboot中配置集群
配置文件:
spring:
rabbitmq:
addresses: 192.168.44.251:5672,192.168.44.252:5672
username: admin
password: 123456
默认情况下,使用的是普通集群也就是标准集群,这种集群会在各节点之间建立临时连接,如果某一个节点宕机,那么队列中的消息就会丢失,其他节点就无法从该节点获得消息。
我们可以通过使用镜像集群来解决这一问题。
镜像集群可以将交换机和队列以及队列中的消息进行同步备份,创建队列的节点叫做主节点,备份的其他节点叫做镜像节点,当主节点宕机后,镜像节点会替代成为新的主节点。
虽然镜像集群支持主从同步,但是这种同步不是强一致性的,也会出现数据丢失的风险。3.8版本之后推出了仲裁队列来代替镜像集群,底层采用Raft协议保证强一致性。
镜像集群可以在管控台进行创建。
发送消息测试:
小结
以上就是关于RabbitMQ集群的配置,希望能对读者有所帮助,如有不正之处,欢迎留言指正。