啓用federation插件和管理插件
1、啓動RabbitMQ服務
rabbitmq-server -detached
2、啓用federation插件
使用root用戶
rabbitmq-plugins enable rabbitmq_federation
3、啓用管理插件
rabbitmq-plugins enable rabbitmq_federation_management
安裝成功後,在web監控界面,在選項admin看到federation的信息
4、定義Federation Upstreams
name:可以隨便起個名字
URI:一般這麼寫:
amqp://admin:[email protected]:5672
或者是:
amqp://admin:[email protected]
端口號加不加都行
admin是用戶名,admin123是密碼。都是控制檯的訪問的用戶名和密碼
正確的配置如下圖示:
5、定義fedration策略
配置好如下圖所示:
然後查看fedration的狀態 fedration status必須爲running纔可以,其他狀態比如爲starting,都是有問題的。
6、發送消息驗證
在rabbitMq發送一個消息
寫個應用程序來消費這些消息
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,完畢