RabbitMq fedration联邦搭建及验证(最完整版)

1、RabbitMq联邦的搭建

启用federation插件和管理插件

1、启动RabbitMQ服务

rabbitmq-server  -detached

2、启用federation插件
使用root用户

rabbitmq-plugins enable rabbitmq_federation

RabbitMq fedration联邦搭建及验证(最完整版)_第1张图片
3、启用管理插件

rabbitmq-plugins enable rabbitmq_federation_management

RabbitMq fedration联邦搭建及验证(最完整版)_第2张图片
安装成功后,在web监控界面,在选项admin看到federation的信息
RabbitMq fedration联邦搭建及验证(最完整版)_第3张图片
RabbitMq fedration联邦搭建及验证(最完整版)_第4张图片
4、定义Federation Upstreams
RabbitMq fedration联邦搭建及验证(最完整版)_第5张图片
name:可以随便起个名字
URI:一般这么写:
amqp://admin:[email protected]:5672
或者是:
amqp://admin:[email protected]
端口号加不加都行

admin是用户名,admin123是密码。都是控制台的访问的用户名和密码
正确的配置如下图示:
在这里插入图片描述

5、定义fedration策略
RabbitMq fedration联邦搭建及验证(最完整版)_第6张图片
配置好如下图所示:
RabbitMq fedration联邦搭建及验证(最完整版)_第7张图片
然后查看fedration的状态 fedration status必须为running才可以,其他状态比如为starting,都是有问题的。
RabbitMq fedration联邦搭建及验证(最完整版)_第8张图片
6、发送消息验证
在rabbitMq发送一个消息
RabbitMq fedration联邦搭建及验证(最完整版)_第9张图片
写个应用程序来消费这些消息
rabbitMQ工具类

import com.rabbitmq.client.ConnectionFactory;

import com.rabbitmq.client.Connection;

public class RabbitMqUtils {
     

    public static Connection getConnection() throws Exception {
     
        ConnectionFactory factory = new ConnectionFactory();

        factory.setHost("10.136.1.195");
        factory.setPort(5672);
        factory.setVirtualHost("/");
        factory.setUsername("test");
        factory.setPassword("test");
        Connection connection = factory.newConnection();
        return connection;
    }

}

消费消息类

import com.example.rabbitmq.util.RabbitMqUtils;
import com.rabbitmq.client.*;

import java.io.IOException;


public class ClusterNode2MsgComsumer {
     

    public static void main(String[] args) throws Exception {
     
        RabbitMqUtils mqUtils = new RabbitMqUtils();
        String queueName = "dc.sync.cloud.queue";
        Connection connection = mqUtils.getConnection();
        Channel channel = connection.createChannel();
        channel.basicConsume(queueName, true, new DefaultConsumer(channel) {
     

            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body)
                    throws IOException {
     
              /*  System.out.println("consumerTag==>" + consumerTag);
                System.out.println("envelope==>" + envelope);
                System.out.println("props==>" + properties);*/
                System.out.println("消费者node2接收消息==>【" + new String(body,"UTF-8") + "】");
            }

        });

    }
}

可以看到消费前是这样的
在这里插入图片描述
运行执行消费
在这里插入图片描述
消费后结果是这样的
在这里插入图片描述
ok,完毕

2、RabbitMq联邦的验证

2.1、首先在微软云的交换机里发送一条消息
RabbitMq fedration联邦搭建及验证(最完整版)_第10张图片
可以看到这条消息在队列中已经存在
RabbitMq fedration联邦搭建及验证(最完整版)_第11张图片
再去查看数据中心队列里的消息
RabbitMq fedration联邦搭建及验证(最完整版)_第12张图片
已经有消息了。我们在查看下消息内容
RabbitMq fedration联邦搭建及验证(最完整版)_第13张图片
和我们之前在云上发送的消息是一致的。
这样就可以说明,我们在云上的消息,通过RabbitMq联邦的形式,可以复制到数据中心里面。
最后,我们通过应用程序将这个数据中心的消息消费掉。
RabbitMq fedration联邦搭建及验证(最完整版)_第14张图片
这时,再查看数据中心队列的消息,已经没有了,如下图所示:
RabbitMq fedration联邦搭建及验证(最完整版)_第15张图片

ok,现在云上环境和云下环境RabbitMq的联通已经完成,如果你还有什么问题,请扫描下面二维码进行咨询.
RabbitMq fedration联邦搭建及验证(最完整版)_第16张图片

你可能感兴趣的:(MQ)