微服务 教程
1085个小节阅读:196.1k
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
无论是生产者还是消费者,只能连接一个RabbitMQ节点,而在我们使用RabbitMQ集群时,如果只连接一个RabbitMQ节点,会造成该节点的压力过大。我们需要平均的向每个RabbitMQ节点发送请求,此时需要一个负载均衡工具帮助我们分发请求,接下来使用Haproxy做负载均衡:
安装Haproxy
xxxxxxxxxx
yum -y install haproxy
配置Haproxy
xxxxxxxxxx
vim /etc/haproxy/haproxy.cfg
添加如下内容:
xxxxxxxxxx
# 以下为修改内容
defaults
# 修改为tcp
mode tcp
# 以下为添加内容
listen rabbitmq_cluster
# 对外暴露端口
bind 0.0.0.0:5672
mode tcp
balance roundrobin
# 代理RabbitMQ的端口
server node1 127.0.0.1:5673 check inter 5000 rise 2 fall 2
server node2 127.0.0.1:5674 check inter 5000 rise 2 fall 2
listen stats
# Haproxy控制台路径
bind 192.168.0.162:8100
mode http
option httplog
stats enable
stats uri /rabbitmq-stats
stats refresh 5s
启动Haproxy
xxxxxxxxxx
haproxy -f /etc/haproxy/haproxy.cfg
访问Haproxy控制台:http://192.168.0.162:8100/rabbitmq-stats
生产者连接Haproxy发送消息
xxxxxxxxxx
// 生产者
public class Producer {
public static void main(String[] args) throws IOException, TimeoutException {
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("192.168.0.162");
connectionFactory.setPort(5672);
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest");
connectionFactory.setVirtualHost("/");
Connection conn = connectionFactory.newConnection();
Channel channel = conn.createChannel();
channel.queueDeclare("simple_queue", false, false, false, null);
channel.basicPublish("", "simple_queue", null, "hello!rabbitmq!".getBytes());
channel.close();
conn.close();
}
}
实时效果反馈
1. 在RabbitMQ集群中,通过设置可以帮助我们给不同节点分发请求
A 副本队列
B 镜像队列
C 负载均衡
D 备用队列
答案
1=>C