文档章节

消息中间件-Activemq之Broker-Cluster

ksfzhaohui
 ksfzhaohui
发布于 2016/01/03 20:12
字数 487
阅读 400
收藏 6

接着上一篇消息中间件-Activemq之Master-Slaver,下面看看Broker-Cluster实现负载均衡
Broker-Cluster实现负载均衡

Broker-Cluster部署方式中,各个broker通过网络互相连接,并共享queue,提供了2中部署方式:
static Broker-ClusterDynamic Broker-Cluster

1).static Broker-Cluster

将ActiveMq拷贝2份,分别命名:apache-activemq-5.10.0_M1,apache-activemq-5.10.0_M2,
下面就是配置activemq,xml:
M1做如下配置:

<networkConnectors>
	<networkConnector uri="static:(tcp://localhost:61617)"/>
</networkConnectors>
<transportConnectors>
        <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnectio        ns=1000&amp;wireFormat.maxFrameSize=104857600"/>
 </transportConnectors>
M2做如下配置:
<networkConnectors>
	<networkConnector uri="static:(tcp://localhost:61616)"/>
</networkConnectors>
<transportConnectors>
        <transportConnector name="openwire" uri="tcp://0.0.0.0:61617?maximumConnectio        ns=1000&amp;wireFormat.maxFrameSize=104857600"/>
 </transportConnectors>
通过以上配置使M1和M2这两个 broker通过网络互相连接,并共享queue,
启动M1和M2,可以看到如下启动日志:



可以看到M1和M2,network connection has been established

测试我们还是用上一篇中的Sender和Receiver类,只需要做一点点修改:
Sender类还是链接tcp://localhost:61616,发送消息到queue,
Receiver做如下修改:

connectionFactory = new ActiveMQConnectionFactory(
	ActiveMQConnection.DEFAULT_USER,
	ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61617");

经测试Receiver可以接受到数据,表示M1和M2已经共享了queue

2).Dynamic Broker-Cluster

Dynamic Discovery集群方式在配置ActiveMQ实例时,不需要知道所有其它实例的URI地址
对activemq.xml做如下配置:
M1做如下配置:

<networkConnectors>
	<networkConnector uri="multicast://default"/>
</networkConnectors>
<transportConnectors>
        <transportConnector name="openwire" uri="tcp://0.0.0.0:61616? maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"
          discoveryUri="multicast://default"/>
 </transportConnectors>
M2做如下配置:
<networkConnectors>
	<networkConnector uri="multicast://default"/>
</networkConnectors>
<transportConnectors>
        <transportConnector name="openwire" uri="tcp://0.0.0.0:61617? maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"
          discoveryUri="multicast://default"/>
 </transportConnectors>
启动M1和M2,可以看到如下启动日志: network connection has been established

测试同static broker-cluster,可以得到相同的结果。
官网配置说明:http://activemq.apache.org/networks-of-brokers.html

Master-Slaver保证了数据的可靠性,Broker-Cluster提供了负载均衡,所以一般正式环境中都会采用:
Master-Slaver+Broker-Cluster的模式

© 著作权归作者所有

共有 人打赏支持
ksfzhaohui

ksfzhaohui

粉丝 329
博文 133
码字总数 172219
作品 3
南京
高级程序员
Java消息中间件入门笔记 - ActiveMQ篇

入门 消息中间件带来的好处: 栗子: 通过服务调用让其它系统感知事件发生 通过消息中间件解耦服务调用 1.Linux安装消息中间件ActiveMQ 1.下载安装包 解压 2.启动与关闭 3.安装验证 4.Maven依...

巅峰小学生
04/30
0
0
activeMQ5官方文档翻译-运行消息中间件

把activeMQ中间件运行起来 注:如果你想以内嵌的方式来使用消息中间件的话你可以参照怎么在一个连接中间嵌入消息中间件 以二进制文件的方式分发的ActiveMQ自带了一个'activemq'的脚本文件来运...

z_jordon
2015/05/31
0
0
ActiveMQ官方文档翻译-内嵌消息中间件

在大多数通信拓扑结构图中都有分JMS Brokers (服务端) 和JMS客户端。但有时会把消息中间件部署到你的jvm内部也是有道理的。This allows you to optimise away a network hop;让JMS的网络调用...

z_jordon
2015/06/01
0
0
实战分享:activemq 在灾备双活建设中的研究

activemq 是业界非常流行的、功能强大的、开源消息中间件。以快速、支持多种跨语言客户端和协议著称;完全支持 JMS 1.1 and J2EE 1.4。在各个行业中有大量的应用案例。 由于 activemq 承担着...

技术小能手
08/23
0
0
Java消息中间件之ActiveMQ

一、消息中间件 1.消息中间件概述 中间件:非底层操作系统软件,非业务应用软件,不是直接给最终用户使用的,不能直接给客户带来价值的软件统称为中间件。 消息中间件:关注与数据的发送和接...

aibinxiao
2017/11/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

解析高可用分布式键值存储 etcd 的原理

这篇文章将会介绍 etcd 的实现原理,其中包括 Raft 协议、存储两大模块,在最后我们也会简单介绍 etcd 一些具体应用场景。 etcd 的官方将它定位成一个可信赖的分布式键值存储服务,它能够为整...

小刀爱编程
18分钟前
1
0
在ubuntun虚拟机里安装goLang语言编程环境

Go语言是谷歌2009发布的第二款开源编程语言。 Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 北京时间201...

JerryWang_SAP
19分钟前
5
0
c++builder导出函数export function DLL

__stdcall __export 即可,如: ulong __stdcall __export od_disasm(char *src,ulong srcsize,ulong srcip, t_disasm *disasm,int disasmmode){ return Disasm(src,srcsiz......

simpower
21分钟前
2
0
KDC服务安装及配置

阿伦哥-
24分钟前
1
0
mybatis-plus公共字段操作以及springboot2整合mybatis-plus

1、公共实体 对于User类中有而user表中没有的属性需要加第二个注解@TableField(exist = false),表示排除User类中的属性 所有新增公共字段加注解 并指定 @TableField(value = "corp_code",fi...

glen_xu
28分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部