美文网首页
(8)ActiveMQ的桥接和集群配置

(8)ActiveMQ的桥接和集群配置

作者: Mrsunup | 来源:发表于2018-12-16 14:40 被阅读0次

    桥接方式可以参考官网:http://activemq.apache.org/networks-of-brokers.html
    集群的方式参考官网:http://activemq.apache.org/masterslave.html

    1.桥接(network of brokers)

    • 配置说明
      修改 activeMQ 服务器的 activeMQ.xml, 增加如下配置
    <networkConnectors>
     <networkConnectoruri="static://(tcp://192.168.11.153:61616,tcp://192.168.11.154:61616)"/>
    </networkConnector
    

    两个 Brokers 通过一个 static 的协议来进行网络连接。一个 Consumer 连接到BrokerB 的一个地址上,当 Producer 在 BrokerA 上以相同的地址发送消息是,此时消息会被转移到 BrokerB 上,也就是说 BrokerA 会转发消息到BrokerB 上

    • 消息回流

    从 5.6 版本开始,在 destinationPolicy 上新增了一个选项replayWhenNoConsumers 属性,这个属性可以用来解决当 broker1 上有需要转发的消息但是没有消费者时,把消息回流到它原始的 broker。同时把enableAudit 设置为 false,为了防止消息回流后被当作重复消息而不被分发

    通过如下配置,在 activeMQ.xml 中。 分别在两台服务器都配置。即可完成消息回流处理

    <policyEntry queue=">" enableAudit="false">
    <networkBridgeFilterFactory>
    <conditionalNetworkBridgeFilterFactory
    replayWhenNoConsumers="true"/>
    </networkBridgeFilterFactory>
    </policyEntry>
    
    • 动态网络连接

    ActiveMQ 使用 Multicast 协议将一个 Service 和其他的 Broker 的 Service 连接起来。Multicast 能够自动的发现其他 broker,从而替代了使用 static 功能列表 brokers。用 multicast 协议可以在网络中频繁

    multicast://ipadaddress:port?transportOptions

    2.基于 zookeeper+levelDB 的 HA 集群搭建

    这里面还有的集群方式方式,这里不再秒速,可以参考官网:
    http://activemq.apache.org/masterslave.html

    activeMQ5.9 以后推出的基于 zookeeper 的 master/slave 主从实现。虽然ActiveMQ 不建议使用 LevelDB 作为存储,主要原因是,社区的主要精力都几种在 kahadb 的维护上,包括 bug 修复等。所以并没有对 LevelDB 做太多的关注,所以他在是不做为推荐商用。但实际上在很多公司,仍然采用了LevelDB+zookeeper 的高可用集群方案。而实际推荐的方案,仍然是基于KahaDB 的文件共享以及 Jdbc 的方式来实现。

    • 配置

    在三台机器上安装 activemq,通过三个实例组成集群。

    • 修改配置

    directory: 表示 LevelDB 所在的主工作目录
    replicas: 集群中存在的节点数量。至少(副本/2)+1节点必须联机,以避免服务中断。
    bind:当当前的节点为 master 时,它会根据绑定好的地址和端口来进行主从复制协议
    zkAddress:zk 的地址
    hostname:本机 IP
    sync:在认为消息被消费完成前,同步信息所存储的策略。

    <broker brokerName="broker" ... >
      ...
      <persistenceAdapter>
        <replicatedLevelDB
          directory="activemq-data"
          replicas="3"
          bind="tcp://0.0.0.0:0"
          zkAddress="zoo1.example.org:2181,zoo2.example.org:2181,zoo3.example.org:2181"
          zkPassword="password"
          zkPath="/activemq/leveldb-stores"
          hostname="broker1.example.org"
          />
      </persistenceAdapter>
      ...
    </broker>
    

    相关文章

      网友评论

          本文标题:(8)ActiveMQ的桥接和集群配置

          本文链接:https://www.haomeiwen.com/subject/gjxxkqtx.html