ActiveMQ -- 集群搭建

ActiveMQ的集群有以下几种

  • Queue consumer clusters
  • Broker clusters
  • Master Slave

这个机种集群配置方式中官网目前推荐的是Master Slave。

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

Broker clusters:代理集群,也就是activeMQ有多个服务备用,放在其中一台服务宕机,导致消息传输中断。
这里发布者和订阅者都需要使用failover协议创建连接
如下:

failover://(tcp://192.168.146.129:61616,tcp://192.168.146.129:61626)

这种配置模式分静态和动态两种配置方式,我没有深入研究,感兴趣的可以查找下资料。

Master Slave

Master Slave 是目前 ActiveMQ 推荐的高可靠性和容错的解决方案。以下是
几种不同的类型
- Pure Master Slave
- Shared File System Master Slave
- JDBC Master Slave

Pure Master Slave

(This feature has been deprecated and will be removed in version 5.8)
这个功能,在5.8版本已经废弃掉了,所以想要使用此种模式的话,就要下载低于5.8的版本才好用。
配置方式:
master broker不需要做任何配置,slave broker配置如下(此用法 5.8版本已经废弃)

<broker masterConnectorURI="tcp://masterhost:62001" shutdownOnMasterFailure="false">

配置中增加了masterConnectorURI=”tcp://masterhost:62001”,slave broker中制定了master broker的连接信息。shutdownOnMasterFailure 用于指定 slave broker 在 master broker 失效的时
候是否需要停止。

Shared File System Master Slave

共享文件主从模式
如果你使用 SAN(存储区域网络(Storage Area Network,简称SAN)) 或者共享文件系统,那么你可以使用 Shared File SystemMaster Slave。基本上,你可以运行多个 broker,这些 broker 共享数据目录。当第一个 broker 得到文件上的排他锁之后,其它的 broker 便会在循环中等待获得这把锁。客户端使用 failover transport 来连接到可用的 broker。当 master broker 失效的时候会释放这把锁,这时候其中一个 slave broker 会得到这把锁从而成为 master broker。

事例代码:

1. <broker useJmx="false" xmlns="http://activemq.org/config/1.0">
2. <persistenceAdapter>
3. <journaledJDBC dataDirectory="/sharedFileSystem/broker"/>
4. </persistenceAdapter>
5. …
6. </broker>

简而言之多个broker存储的地址配置成相同的共享网络地址。

JDBC Master Slave

JDBC Master Slave 的工作原理跟 Shared File System Master Slave 类似,只是采用了数据库作为持久化存储。

官网推荐我们使用:Shared File System Master Slave来搭建集群

要使用Docker搭建ActiveMQ单机集群,你可以按照以下步骤进行操作: 1. 创建一个文件夹作为ActiveMQ集群目录,可以使用命令`mkdir mq_cluster`来创建。 2. 进入这个目录,可以使用命令`cd mq_cluster`来切换到该目录下。 3. 使用命令`sudo cp -r /usr/local/apache-activemq-5.16.0/ mq_node01`复制ActiveMQ的安装目录到mq_node01文件夹中。同样地,可以使用命令`sudo cp -r /usr/local/apache-activemq-5.16.0/ mq_node02`和`sudo cp -r /usr/local/apache-activemq-5.16.0/ mq_node03`分别复制到mq_node02和mq_node03文件夹中。 4. 使用Docker运行三个ActiveMQ容器,可以使用`docker run`命令加上适当的参数来运行容器。这些参数可以指定容器的名称、网络设置、端口映射和挂载目录等。例如,可以使用命令`docker run --name activemq_node01 -p 61616:61616 -p 8161:8161 -v $(pwd)/mq_node01:/opt/apache-activemq-5.16.0 -d webcenter/activemq`来运行第一个ActiveMQ容器,其中`-p`参数指定了端口映射,`-v`参数指定了容器内外目录的挂载。同样地,可以运行第二个和第三个容器,并分别命名为activemq_node02和activemq_node03,并设置不同的端口映射和挂载目录。这样就成功搭建了一个ActiveMQ单机集群。 5. 如果需要进入容器内部进行操作,可以使用命令`docker exec -it 容器名称 bash`来进入容器。例如,可以使用命令`docker exec -it activemq_node01 bash`进入第一个容器。 请注意,这里的步骤是使用Docker运行ActiveMQ的一个简单示例,具体的操作可能会根据实际情况有所不同。在实际应用中,还需要根据需求进行配置和管理,比如配置集群的网络通信、负载均衡和故障转移等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MQ(解耦、削峰、异步)之ActiveMQ消息中间件(包括搭建zookeeper+activemq集群)](https://blog.csdn.net/qq_26496077/article/details/111835569)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [RabbitMQ集群(docker简单搭建)](https://blog.csdn.net/weixin_52173120/article/details/115867624)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值