文档章节

消息中间件-Activemq之Broker-Cluster

ksfzhaohui
 ksfzhaohui
发布于 2016/01/03 20:12
字数 487
阅读 388
收藏 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

粉丝 311
博文 130
码字总数 165049
作品 3
南京
高级程序员
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
Java消息中间件之ActiveMQ

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

aibinxiao
2017/11/01
0
0
ActiveMQ入门,ActiveMQ与RocketMQ的对比

ActiveMQ入门 前面的文章已经写过MQ的相关概念,这里不再赘述。 1.1 ActiveMQ是什么 ActiveMQ是Apache下的开源项目,完全支持JMS1.1和J2EE1.4规范的JMS Provider实现。 1.2 ActiveMQ的特点 ...

LinkedBear
08/04
0
0
activeMQ5官方文档翻译-初始化配置

首先你需要把jar包加到classpath 所需的jar包 为了使ActiveMQ更容易使用,默认的activemq-all.jar包包含了所有需要用到的库文件。如果你喜欢以明确的控制jar包的方式来使用ActiveMQ,那下面是...

z_jordon
2015/05/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

内存模型是怎么解决缓存一致性的?

在再有人问你Java内存模型是什么,就把这篇文章发给他。这篇文章中,我们介绍过关于Java内容模型的来龙去脉。 我们在文章中提到过,由于CPU和主存的处理速度上存在一定差别,为了匹配这种差距...

Java填坑之路
13分钟前
1
0
vue-cli 3.0 初体验

最近复习了下vue,突然发现vue-cli已经更新到3.0版本了,并且变化蛮大,看来要不停的学习,真是一入前端深似海。 安装步骤: 1、全局安装 npm install -g @vue/cli Vue CLI 的包名称由 vue-...

tianyawhl
15分钟前
0
0
Angular进阶之路

【初级】会写页面,能出东西。 给定环境和 rest API,不用第三方库,能在十分钟内完成一个 master/detail 结构的带路由的应用(可以不管美观)。 知识点:Angular CLI、组件、路由、HTTP 服务...

陆小七的主页
18分钟前
0
0
Redis缓存数据库安全加固指导(一)

背景 在众多开源缓存技术中,Redis无疑是目前功能最为强大,应用最多的缓存技术之一,参考2018年国外数据库技术权威网站DB-Engines关于key-value数据库流行度排名,Redis暂列第一位,但是原生...

中间件小哥
18分钟前
0
0
百万级数据mysql分区

1. 什么是表分区? 表分区,是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分。从逻辑上看,只有一张表,但是底层却是由多个物理分区组成。 2. 表分区与分表的区别 分表...

罗文浩
20分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部