博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Activemq集群搭建
阅读量:5361 次
发布时间:2019-06-15

本文共 2237 字,大约阅读时间需要 7 分钟。

集群搭建

一:静态网络集群

1.简介

​ 当ActiveMQ面对大量消息存储和大量Client交互时,性能消耗将会达到单个broker极限,此时我们需要对ActiveMQ进行水平扩展。ActiveMQ提供了“network”机制,可以把多个broker实例“串联”一起,形成“Forward Bridge”模型(转发桥)。这些Broker通过有向网络(networker Connector)链接在一起,组成broker集群,任何一个Borker都可以与Client数据交互,消息也将在Broker网络中“流动”直到被消费,之所以“流动”,因为“producer”和“consumer”会与不同的broker建立链接,我们认为“转发桥”架构模式是“较大”集群数据的解决方案。

2.拓扑图

静态网络集群

3.配置示例

在activemq.xml配置文件中加入

<\beans
  • url 对端mq的连接地址,如果有多台,以","为分隔符
  • duplex true为双向订阅,两台mq之间互为消费者和生产者,如果为false,即配置主机为消费者,远端主机为生产者

二:主从集群

1.简介

​ 在master-slave模式中,消息将会在多个broker上备份,即集群中每个broker上消息都一样,在故障转移时不会发生消息丢失的问题(持久化消息)。

2.拓扑图

10643

目前mq支持三种持久化方式,如下:

  • kahadb:以本地的数据库形式存储,速度没有AMQ快,扩展性好,目前mq默认的持久化方式。
  • AMQ:文件存储方式,写入速度快和容易恢复,默认文件大小为32M,5.3版本以前默认支持。
  • JDBC:使用外置数据库的形式存储消息。

特性对比:

  • AMQ/kahadb:读写性能一般
  • jdbc:受限于数据库性能,也比较一般
  • zookeeper:性能比较好

3.配置示例

修改activemq.xml文件,更改kahadb持久化方式为mysql

修改activemq.xml文件,更改kahadb持久化方式为mysql        

修改activemq,在后添加数据库连接信息

4.切换说明

  1. 当master启动后,会自动在activemq中创建三个表

    ACTIVEMQ_ACKS    为第三张表的外键连接ACTIVEMQ_LOCK    master锁定,保证只有一个masterACTIVEMQ_MSGS    存储消息
  2. 优先读取到db的ACTIVEMQ_LOCK的为master

  3. 处于slave状态的Broker,服务端口(61616)和manage(6181)端口是没有启动的。

  4. 处于slave状态的Broker,会定时去读取MySQL,如果发现已经被锁了,则继续等待

    2018-01-03 11:10:53,698 | INFO  | Failed to acquire lock.  Sleeping for 1000 milli(s) before trying again... | org.apache.activemq.store.jdbc.DefaultDatabaseLocker | main2018-01-03 11:11:45,715 | INFO  | Failed to acquire lock.  Sleeping for 1000 milli(s) before trying again... | org.apache.activemq.store.jdbc.DefaultDatabaseLocker | main2018-01-03 11:12:37,735 | INFO  | Failed to acquire lock.  Sleeping for 1000 milli(s) before trying again... | org.apache.activemq.store.jdbc.DefaultDatabaseLocker | main2018-01-03 11:13:29,751 | INFO  | Failed to acquire lock.  Sleeping for 1000 milli(s) before trying again... | org.apache.activemq.store.jdbc.DefaultDatabaseLocker | main

三:客户端

1.连接url说明

failover:(tcp://local:61616,tcp://remote:61616)?randomize=false&priorityBackup=true
  • failover:连接地址池为多个,以","号为分隔符,当其中一个失效后,会自动切换
  • randomize:false关闭随机选择
  • priorityBackup:当randomize为false时,pri为true时,会默认为第一个为优先
  • timeout:超时时间

转载于:https://www.cnblogs.com/GXLo/p/8182973.html

你可能感兴趣的文章
leetcode469:等价二叉树
查看>>
javaScript 实时获取系统时间
查看>>
ES6思维导图
查看>>
第四周作业
查看>>
20151121
查看>>
线段重叠 (思维好题)
查看>>
Codeforces Round #413 C. Fountains (线段树的创建、查询、更新)
查看>>
SBuild 0.1.5 发布,基于 Scala 的构建系统
查看>>
WordPress 3.5 RC3 发布
查看>>
DOM扩展札记
查看>>
python中的None
查看>>
Shiro权限框架使用总结
查看>>
Windows Azure 上传 VM
查看>>
SharePoint Framework 在web部件中使用第三方样式 - 将第三方样式打到包中
查看>>
阿里云OSS上传文件本地调试跨域问题解决
查看>>
python的安装和配置环境变量
查看>>
PHP -- 图像处理
查看>>
Ubuntu 16.04修复PDF默认使用ImageMagick打开无法设置其它默认的问题(默认打开程序设置)...
查看>>
Mac的brew和brew cask区别以及安装brew cask
查看>>
归并排序与堆排序
查看>>