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做负载均衡相关推荐

  1. emq集群配置nginx做负载均衡

    emq集群配置nginx做负载均衡 创建 EMQ X 节点集群 emqx 集群搭建 例如: 节点 IP 地址 emqx@192.168.1.17 192.168.1.17 emqx@192.168.1 ...

  2. 自己搭建的k8s集群,怎么做负载均衡?

    如果把K8S搞在公有云上,可以跟云厂商买它的负载均衡服务,就用这个负载均衡服务提供的公网IP,把你的域名映射到这个公网IP上,然后配置这个云厂商提供的负载均衡服务,让它往后端的ECS主机上转发 但是呢 ...

  3. 集群、分布式、负载均衡区别

    集群.分布式.负载均衡区别 参考:http://virtualadc.blog.51cto.com/3027116/615836" 集群 集群的概念 计算机集群通过一组松散集成的计算机软件和 ...

  4. Nginx做负载均衡的模块

    负载均衡模块 使用nginx做负载均衡的两大模块: upstream 定义负载节点池 ocation 模块 进行URL匹配. proxy模块 发送请求给upstream定义的节点池 upstream模 ...

  5. 使用nginx做负载均衡

    使用nginx做负载均衡的两大模块: upstream 定义负载节点池. location 模块 进行URL匹配. proxy模块 发送请求给upstream定义的节点池. upstream模块解读 ...

  6. 集群、分布式、负载均衡区别(转)

    集群 集群的概念 计算机集群通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接, ...

  7. 集群、分布式、负载均衡

    一. 集群 集群的概念 计算机集群通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网 ...

  8. ttlsa教程系列之MySQL---MySQL/Galera集群-多主高可用性负载均衡

    为什么80%的码农都做不了架构师?>>>    ttlsa教程系列之MySQL ---- MySQL/Galera集群-多主高可用性负载均衡 Percona和MariaDB发布版本中 ...

  9. 集群、分布式、负载均衡区别与联系

    1.Linux集群主要分成三大类( 高可用集群, 负载均衡集群,科学计算集群)(下面只介绍负载均衡集群)  负载均衡集群(Load Balance Cluster)  负载均衡系统:集群中所有的节点都 ...

最新文章

  1. cygwin安装hadoop过程中出现的2个问题
  2. LeetCode Gas Station(双指针 )
  3. 我的问道游戏主题皮肤
  4. C++ c_str()
  5. 地产遇冷之际,行业竞争加剧,房企如何走出营销低谷,先声夺人?
  6. 一些算法竞赛参考书及豆瓣评分
  7. mysql group by cube_SparkSQL 中group by、grouping sets、rollup和cube方法详解
  8. ABP官方文档翻译 5.1 Web API控制器
  9. 一个工作三年左右的Java程序员跟大家分享从业心得
  10. 2022软件库iAPP源码前端/后端程序整套独立后台
  11. HWSD全球土壤数据下载
  12. 归并算法(详细见解)
  13. 如何同时打开两个excel窗口
  14. PI AAE (Advanced Adapter Engine) 介绍一
  15. RabbitMQ 中的 VirtualHost 该如何理解
  16. 如何设计一个项目的数据库
  17. 明朝经典战役\明朝挽救历史狂澜\于谦人生最高点\北京保卫战
  18. 怎么将计算机恢复到前一天的状况,excel表格恢复前一天数据-我想将excel表格中的两组数据做对比(数据是每天变......
  19. 虚拟机服务器磁盘扩容步骤,vmware ESXi 虚拟机扩容磁盘空间
  20. OpenHarmony HDF Input框架模块 按键控制LED基于小熊派micro

热门文章

  1. AndroidManifest.xml中Activity ConfigChanges属性的用法
  2. android 非法字符 \ufeff错误
  3. 【Android.mk】android编译系统makefile文件Android.mk的写法
  4. JVM—方法区到底是怎么保存函数方法的?
  5. 华为上机考试题系列(一):牛客网的奇葩操作
  6. 接口自动化测试系列(一):HTTP状态码
  7. 计算机领域中随处可见的抽象
  8. 进程相关(进程Id获取主窗口)
  9. POJ 3660 Cow Contest
  10. 那些我希望在一开始使用 Zsh(oh-my-zsh) 时就知道的