ActiveMQ 中的 Broker 是一个消息代理,负责接收、路由和发送消息。
ActiveMQ 中主要有 3 种 Broker:
- Standalone Broker: 单一的 broker 实例,用于开发或小规模应用。
- Master Slave Broker: 主备 broker 实例,通过数据同步实现高可用。
- Network of Brokers: Broker 网络,多个 broker 通过网络连接,共同组成一个消息服务器,扩展性强。
这 3 种 Broker 的主要区别在于:
- 性能:Network of Brokers 性能最高,Standalone Broker 性能最低。
- 高可用:Master Slave Broker 配置高可用,其他类型无法保证高可用。
- 扩展性:Network of Brokers 扩展性最强,Standalone Broker 扩展性最差。
- 复杂度:Network of Brokers 配置最复杂,Standalone Broker 最简单。
例如:
Standalone Broker 配置:
<broker>
<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>
</broker>
Master Slave Broker 配置:
<broker>
<haPolicy>
<sharedStore/>
</haPolicy>
<broker>
<masterBroker>
<uri>failover://tcp://masterhost:61616</uri>
</masterBroker>
<slaveBroker>
<uri>failover://tcp://slavehost:61616</uri>
</slaveBroker>
</broker>
</broker>
Network of Brokers 配置:
Master Broker(master.xml):
<networkConnectors>
<networkConnector uri="static:(tcp://localhost:61617)" duplex="true"/>
</networkConnectors>
Slave Broker(slave.xml):
<networkConnectors>
<networkConnector uri="static:(tcp://localhost:61616)" duplex="true"/>
</networkConnectors>
然后启动两个 broker:
activemq console xbean:file:master.xml
activemq console xbean:file:slave.xml
所以,根据不同的应用场景选择不同类型的 Broker:
开发测试阶段 -> Standalone Broker
生产环境下 -> Master Slave Broker
大规模集群部署 -> Network of Brokers
需要权衡性能、高可用、扩展性等因素进行选择。