77范文网 - 专业文章范例文档资料分享平台

ActiveMQ使用手册(7)

来源:网络收集 时间:2019-04-05 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

第三章 ActiveMQ集群方式

3.1 AMQ集群特点

? 异构系统通讯、异步调用、应用解耦。

? 高可用性。每组Broker采用主从模式部署,支持Failover。 ? 客户端支持多组Broker服务器负载均衡和Failover。 ? 统一的异常消息重试服务,偏于容错。 ? 同步发送、消息持久化,防止数据丢失。 ? 消息异步归档到云存储,偏于问题跟踪。

? 高扩展性。动态扩容,支持水平扩展,按消息垂直划分。

? 易维护。统一集群管理控制平台,完善的监控报警,消息运营状况统计。 ? 原理图:

3.2 AMQ集群方式--Queue consumer clusters

ActiveMQ支持订阅同一个queue的consumers上的集群。如果一个consumer失效,那么所有未被确认(unacknowledged)的消息都会被发送到这个queue上其它的consumers。如果某个consumer的处理速度比其它 consumers更快,那么这个consumer就会消费更多的消息。

第28页

3.3 AMQ集群方式--Broker clusters

一个常见的场景是有多个JMS broker,有一个客户连接到其中一个broker。如果这个broker失效,那么客户会自动重新连接到其它的broker。在ActiveMQ中使用failover:// 协议来实现这个功能。ActiveMQ3.x版本的reliable://协议已经变更为failover://。

如果某个网络上有多个brokers而且客户使用静态发现(使用Static Transport或Failover Transport)或动态发现(使用Discovery Transport),那么客户可以容易地在某个broker失效的情况下切换到其它的brokers。然而,stand alone brokers并不了解其它brokers上的consumers,也就是说如果某个broker上没有consumers,那么这个broker上的消息可能会因得不到处理而积压起来。目前的解决方案是使用Network of brokers,以便在broker之间存储转发消息。

从ActiveMQ1.1版本起,ActiveMQ支持networks of brokers。它支持分布式的queues和topics。一个broker会相同对待所有的订阅(subscription):不管他们是来自本地的客户连接,还是来自远程broker,它都会递送有关的消息拷贝到每个订阅。远程broker得到这个消息拷贝后,会依次把它递送到其内部的本地连接上。有两种方式配置Network of brokers, 一种是使用static transport,如下:

第29页

另外一种是使用multicast discovery,如下:

...

Network Connector有以下属性:

属性 name dynamicOnly 默认描述 值 bridg名称 e 如果为true, 持久订阅被激活时false 才创建对应的网路持久订阅。默认是启动时激活。 如果为true,网络的消费者优先false 级降低为-5。如果为false,则默认跟本地消费者一样为0. 消息和订阅在网络上通过的1 broker数量 多个网络消费者是否被当做一个true 消费者来对待。 第30页

decreaseNetworkConsumerPriority networkTTL conduitSubscriptions

excludedDestinations empty 不通过网络转发的destination 通过网络转发的destinations,dynamicallyIncludedDestinations empty 注意空列表代表所有的都转发。 匹配的都将通过网络转发-即使没staticallyIncludedDestinations empty 有对应的消费者 如果为true,则既可消费又可生duplex false 产消息到网络broker 设置网络消费者的prefetch sizeprefetchSize 1000 参数。必须大于0,因为网络消费者不能自己轮询消息。 suppressDuplicateQueueSubscriptio(从5.3版本开始) 如果为true, false ns 重复的订阅关系一产生即被阻止。 是否广播advisory messages来创bridgeTempDestinations true 建临时destination。 (从 5.6版本开始) 如果为true,非持久化消息也将使用alwaysSyncSend false request/reply方式代替oneway方式发送到远程broker。 (从5.6版本开始) 如果为true,只有staticBridge false staticallyIncludedDestinations中配置的destination可以被处理。 3.3.1 管道订阅conduitSubscriptions

对于conduitSubscriptions属性,用于负载均衡时使用。设想有两个brokers,分别是brokerA和brokerB,它们之间用 forwarding bridge连接。有一个consumer连接到brokerA并订阅queue:Q.TEST。有两个consumers连接到brokerB,也是订阅queue:Q.TEST。这三个consumers有相同的优先级。然后启动一个producer,它发送了30条消息到brokerA。如果 conduitSubscriptions=true,那么brokerA上的consumer会得到15条消息,另外15条消息会发送给brokerB。此时负载并不均衡,因为此时brokerA将brokerB上的两个consumers视为一个;如果 conduitSubscriptions=false,那么每个consumer上都会收到10条消息。

3.3.2 双向网络连接(duplex networkConnector)

默认NetworkConnector在需要转发消息时是单向连接的。当duplex=true时,就变成了双向连接,这时配置在broker2端的指向broker1的duplex networkConnector,相当于即配置了

第31页

broker2到broker1的网络连接,也配置了broker1到broker2的网络连接。(就是说不管broker1同意与否,都被绑架了。)当然,仅仅在broker1上配置也有同样的效果。

注意:可以在两个broker间建立两个以上的双向网络连接来增加吞吐量或对主题\\队列分区,只需要指定他们使用不同的name即可。

3.3.3 指定和限制Destination

通过NetworkConnector共享的destination太多,传输的Advisory Message就会变的非常多,系统的拓扑结构将变得非常复杂,所有才有多种方式来限制这些destination配置:

dynamicallyIncludedDestinations

这里匹配到的destination,在需要时将被转发。 excludedDestinations

这里匹配到的destination,将不会被转发 staticallyIncludedDestinations

如果指定了staticBridge为true,则只有这里匹配的destination可以被转发。此时本地broker完全被其他broker代理。 并且本broker不会订阅其他broker上的AdvisoryMessage,也不会获取任何远程consumer信息。 这几个配置可以使用通配符,比如“>”,详见wildcard。 示例代码:

conduitSubscriptions=\

decreaseNetworkConsumerPriority=\>

第32页

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库ActiveMQ使用手册(7)在线全文阅读。

ActiveMQ使用手册(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/571712.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: