RabbitMq集群使用Nginx做负载均衡
2019独角兽企业重金招聘Python工程师标准>>>
1.配置rabbitmq集群(可以参考前一篇RabbitMq之部署集群)
2.Nginx做负载均衡
注意:Nginx1.90版本后 新增了stream 模块用于一般的 TCP 代理和负载均衡,之前版本不支持
修改Nginx配置文件nginx.conf添加如下配置,监听12345端口
stream {
upstream rabbitmqserver {
server 192.168.191.20:5672;
server 192.168.191.131:5672;
server 192.168.191.132:5672;
}
server {
listen 12345;
proxy_pass rabbitmqserver;
}
}
修改后重启Nginx,使之生效。
3.测试
获取连接的工具类
package com.sky.study;
import java.io.IOException;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
/**
* 生成连接
* @author 86940
*
*/
public class ConnectionUtil {
public static Connection getConnection() throws IOException {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("192.168.191.132");//做Nginx负载均衡的服务器地址
factory.setPort(12345);//使用Nginx做了tcp负载均衡,监听的是12345端口
factory.setUsername("admin");
factory.setPassword("123456");
factory.setVirtualHost("hello");
Connection connection = factory.newConnection();
return connection;
}
}
生产者
package com.sky.study.helloWorld;
import java.io.IOException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.sky.study.ConnectionUtil;
public class Send {
private static final String QUEUE_NAME = "q.test.01";
public static void main(String[] args) {
Connection connection = null;
Channel channel = null;
try {
// 获取连接
connection = ConnectionUtil.getConnection();
// 创建通过
channel = connection.createChannel();
// 声明(创建)队列
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
// 消息
String message = "Hello World!";
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
System.out.println("发送成功");
} catch (IOException e) {
e.printStackTrace();
} finally {
if (channel != null) {
try {
channel.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
消费者
package com.sky.study.helloWorld;
import java.io.IOException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConsumerCancelledException;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.QueueingConsumer.Delivery;
import com.sky.study.ConnectionUtil;
import com.rabbitmq.client.ShutdownSignalException;
public class Recv {
private static final String QUEUE_NAME = "q.test.01";
public static void main(String[] args) {
Connection connection = null;
Channel channel = null;
try {
connection = ConnectionUtil.getConnection();
channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
// 定义队列的消费者
QueueingConsumer consumer = new QueueingConsumer(channel);
// 监听队列
channel.basicConsume(QUEUE_NAME, true, consumer);
// 获取消息
while (true) {
Delivery nextDelivery = consumer.nextDelivery();
String message = new String(nextDelivery.getBody());
System.out.println(message);
}
} catch (IOException e) {
e.printStackTrace();
} catch (ShutdownSignalException e) {
e.printStackTrace();
} catch (ConsumerCancelledException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
结束,谢谢支持
转载于:https://my.oschina.net/sky2008/blog/2248918
RabbitMq集群使用Nginx做负载均衡相关推荐
- emq集群配置nginx做负载均衡
emq集群配置nginx做负载均衡 创建 EMQ X 节点集群 emqx 集群搭建 例如: 节点 IP 地址 emqx@192.168.1.17 192.168.1.17 emqx@192.168.1 ...
- 自己搭建的k8s集群,怎么做负载均衡?
如果把K8S搞在公有云上,可以跟云厂商买它的负载均衡服务,就用这个负载均衡服务提供的公网IP,把你的域名映射到这个公网IP上,然后配置这个云厂商提供的负载均衡服务,让它往后端的ECS主机上转发 但是呢 ...
- 集群、分布式、负载均衡区别
集群.分布式.负载均衡区别 参考:http://virtualadc.blog.51cto.com/3027116/615836" 集群 集群的概念 计算机集群通过一组松散集成的计算机软件和 ...
- Nginx做负载均衡的模块
负载均衡模块 使用nginx做负载均衡的两大模块: upstream 定义负载节点池 ocation 模块 进行URL匹配. proxy模块 发送请求给upstream定义的节点池 upstream模 ...
- 使用nginx做负载均衡
使用nginx做负载均衡的两大模块: upstream 定义负载节点池. location 模块 进行URL匹配. proxy模块 发送请求给upstream定义的节点池. upstream模块解读 ...
- 集群、分布式、负载均衡区别(转)
集群 集群的概念 计算机集群通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接, ...
- 集群、分布式、负载均衡
一. 集群 集群的概念 计算机集群通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网 ...
- ttlsa教程系列之MySQL---MySQL/Galera集群-多主高可用性负载均衡
为什么80%的码农都做不了架构师?>>> ttlsa教程系列之MySQL ---- MySQL/Galera集群-多主高可用性负载均衡 Percona和MariaDB发布版本中 ...
- 集群、分布式、负载均衡区别与联系
1.Linux集群主要分成三大类( 高可用集群, 负载均衡集群,科学计算集群)(下面只介绍负载均衡集群) 负载均衡集群(Load Balance Cluster) 负载均衡系统:集群中所有的节点都 ...
最新文章
- cygwin安装hadoop过程中出现的2个问题
- LeetCode Gas Station(双指针 )
- 我的问道游戏主题皮肤
- C++ c_str()
- 地产遇冷之际,行业竞争加剧,房企如何走出营销低谷,先声夺人?
- 一些算法竞赛参考书及豆瓣评分
- mysql group by cube_SparkSQL 中group by、grouping sets、rollup和cube方法详解
- ABP官方文档翻译 5.1 Web API控制器
- 一个工作三年左右的Java程序员跟大家分享从业心得
- 2022软件库iAPP源码前端/后端程序整套独立后台
- HWSD全球土壤数据下载
- 归并算法(详细见解)
- 如何同时打开两个excel窗口
- PI AAE (Advanced Adapter Engine) 介绍一
- RabbitMQ 中的 VirtualHost 该如何理解
- 如何设计一个项目的数据库
- 明朝经典战役\明朝挽救历史狂澜\于谦人生最高点\北京保卫战
- 怎么将计算机恢复到前一天的状况,excel表格恢复前一天数据-我想将excel表格中的两组数据做对比(数据是每天变......
- 虚拟机服务器磁盘扩容步骤,vmware ESXi 虚拟机扩容磁盘空间
- OpenHarmony HDF Input框架模块 按键控制LED基于小熊派micro
热门文章
- AndroidManifest.xml中Activity ConfigChanges属性的用法
- android 非法字符 \ufeff错误
- 【Android.mk】android编译系统makefile文件Android.mk的写法
- JVM—方法区到底是怎么保存函数方法的?
- 华为上机考试题系列(一):牛客网的奇葩操作
- 接口自动化测试系列(一):HTTP状态码
- 计算机领域中随处可见的抽象
- 进程相关(进程Id获取主窗口)
- POJ 3660 Cow Contest
- 那些我希望在一开始使用 Zsh(oh-my-zsh) 时就知道的