Rabbitmq-死信队列
-
队列的参数发生改变后,不会进行更新操作;此时直接启动会报错,需要手动删除当前队列。
-
不过在实际开发中不建议删除队列;可以重新起一个队列名称进行绑定。
声明队列与交换机,并且绑定它们之间的关系
package com.zhang.rabbitmq.springbootrabbitmqproducer.config;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 死信队列
*/
绑定TTL过期队列与死信队列之间的关系

package com.zhang.rabbitmq.springbootrabbitmqproducer.config;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
/**
* 过期队列-TTL-交换机和队列的绑定
*/
-
死信队列:保存 TTL 队列中的过期信息的队列,被称为死信队列。
内存磁盘的监控
设置内存大小命令:根据电脑内存空间自动计算
rabbitmqctl set_vm_memory_high_watermark 0.6
设置磁盘大小命令:
rabbitmqctl set_vm_memory_high_watermark absolute “4G”
集群
1、查看Rabbitmq是否有启动
ps aux|grep rabbitmq
或者
systemctl status rabbimq-server
表示有服务启动

2、停止Rabbitmq服务
systemctl stop rabbitmq-server
3、启动第一个节点 rabbit-1
sudo RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit-1 rabbitmq-server start &
4、启动第二个节点rabbit-2
sudo RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=rabbit-2 rabbitmq-server start &
5、查看是否启动成功
ps aux|grep rabbitmq
启动成功

6、rabbit-1操作作为主节点
# 停止应用
sudo rabbitmqctl -n rabbit-1 stop_app; -n 表示服务的名称;
# 目的是清除节点上的历史数据(如果不清楚,无法将节点加入到集群)
sudo rabbitmqctl -n rabbit-1 reset
# 启动应用
sudo rabbitmqctl -n rabbit-1 start_app
7、rabbit2操作作为从节点
# 停止应用
sudo rabbitmqctl -n rabbit-2 stop_app; -n 表示服务的名称;
# 目的是清除节点上的历史数据(如果不清楚,无法将节点加入到集群)
sudo rabbitmqctl -n rabbit-2 reset
# 将rabbit2节点加入到rabbit1(主节点)集群当中【Server-node服务器的主机名】
sudo rabbitmqctl -n rabbit-2 join_cluster rabbit-1
绑定成功

8、验证集群状态
sudo rabbitmqctl cluster_status -n rabbit-1
绑定成功

集群web界面管理调试
-
在访问的时候,web界面的管理需要给15672 node-1 和 15673 node-2 设置用户名和密码,还有开放 15672、15673、5672、5673的端口号;
-
防火墙开放端口号:
rabbitmqctl -n rabbit-1 add_user admin admin
rabbitmqctl -n rabbit-1 set_user_tags admin administrator
rabbitmqctl -n rabbit-1 set_permissions -p / admin ".*" ".*" ".*"
rabbitmqctl -n rabbit-2 add_user admin admin
rabbitmqctl -n rabbit-2 set_user_tags admin administrator
rabbitmqctl -n rabbit-2 set_permissions -p / admin ".*" ".*" ".*"
1、集群的消息都是同步的。
2、主节点在运行中时,从节点挂了,数据不会丢失。
3、主节点挂了,从节点中的队列会显示为(down),表示节点已下线,不能接收消息,直到主节点恢复运行之后,从节点才能正常工作。
4、主节点和从节点都挂后,先启动从节点是不能启动成功的,必须要先启动主节点。
rabbitmqctl -n rabbit-2 start_app # 启动;
rabbitmqctl -n rabbit-2 stop_app # 停止;
rabbitmqctl -n rabbit-2 reset # 重启;

浙公网安备 33010602011771号