镜像队列的使用

镜像队列

一、搭建步骤

  1. 在如何节点
    在这里插入图片描述
  2. 重新创建队列时,备份的交换机是由服务器来决定的
    在这里插入图片描述在这里插入图片描述
  3. 动态变更IP地址使用实现负载均衡(nginx)
    去使用Nginx连接或者SpringClourd

二、搭建联合交换机

  1. 需要保证每台节点单独运行
  2. 在每台机器上开启federation插件
rabbitmq-plugins enable rabbitmq_federation
rabbitmq-plugins enable rabbitmq_federation_management

安装成功
在这里插入图片描述在这里插入图片描述
2.原理:
node1数据向着node2流动,node2无法向node1流动数据,同步数据是以交换机为节点,node1交换机需要向node2交换机输入数据,node1交换机需要配置node2交换机的地址,前提是consumer在node2创建fed_exchange,node2必须要先有交换机,如果没有就会报错!!!,在node2节点上配置node1,然后添加策略

(1)创建交换机标题

在这里插入图片描述

(2)创建交换机与节点

 //队列名称
    public static final String QUEUE_NAME = "mirrior_hello";
    /**
     * 联邦交换机
     */
    public static final String FED_EXCHANGE = "fed_exchange";
//    接收消息
    public static void main(String[] args) throws Exception {
//        创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("192.168.119.222");
        factory.setUsername("admin");
        factory.setPassword("123456");
//        连接
        Connection connection = factory.newConnection();
//        信道
        Channel channel = connection.createChannel();
        channel.exchangeDeclare(FED_EXCHANGE,BuiltinExchangeType.DIRECT);
        channel.queueDeclare("node2_queue",true,false,false,null);
        channel.queueBind("node2_queue",FED_EXCHANGE,"routingKey");
//        声明接收消息
        DeliverCallback deliverCallback = (var1, var2) -> {
            System.out.println( new String(var2.getBody()));
        };
//        声明取消消息
        CancelCallback cancelCallback = (String var1) ->{
            System.out.println("消费消息被中断");
        };

        /**
         * 消费者 接收消费
         * 1.消费哪个队列
         * 2.消费成功之后是否要自动应答 true代表的是自动应答 false代表手动应答
         * 3.消费者未成功消费的回调
         * 4.消费者取消消费的回调
         *
         */
        channel.basicConsume(QUEUE_NAME,true,deliverCallback,cancelCallback);



    }

(3)配置Federation Upstreams

在这里插入图片描述

(4)添加一个Policies策略

在这里插入图片描述

添加成功

在这里插入图片描述

三、搭建联合队列

(1)搭建步骤

在这里插入图片描述

四、Shovel

概念:Federation 具备的数据转发功能类似,Shovel 够可靠、持续地从一个 Broker 中的队列(作为源端,即source)拉取数据并转发至另一个 Broker 中的交换器(作为目的端,即 destination)。作为源端的队列和作为目的端的交换器可以同时位于同一个 Broker,也可以位于不同的 Broker 上。Shovel 可以翻译为"铲子",是一种比较形象的比喻,这个"铲子"可以将消息从一方"铲子"另一方。Shovel 行为就像优秀的客户端应用程序能够负责连接源和目的地、负责消息的读写及负责连接失败问题的处理。

(1)搭建步骤

添加插件(需要的机器开启)

rabbitmq-plugins enable rabbitmq_shovel
rabbitmq-plugins enable rabbitmq_shovel_management

在交换机1发送消息到Q1,Q1有一条消息,交换机2发消息给Q2时,Q2会有两条消息,因为Q1的消息会通过shovel给到Q2所以Q2就会有两条消息

添加shovel

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blitzcrank007!

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值