ActiveMQ源码解析(一):聊聊broker
2016-05-30 22:49
447 查看
一、Broker
消息队列核心,相当于一个控制中心,负责路由消息、保存订阅和连接、消息确认和控制事务
1.Broker接口
定义了一些获取broker本身相关信息,添加connection、destination、session、消息生产者、控制事务的接口
1.1 CompositeDestinationBroker
多目的地Broker,Producer可以通过它将生产的消息传给多个destination
1.2 EmptyBroker
空broker
1.3 ErrorBroker
调用的它的方法会抛出BrokerStoppedException
1.4 TransactionBroker
为broker的每个方法提供分布式事务XA支持
2、BrokerFactory(抽象工厂模式)
public static BrokerService createBroker(URI brokerURI, boolean startBroker) throws Exception {
if (brokerURI.getScheme() == null) {
throw new IllegalArgumentException("Invalid broker URI, no scheme specified: " + brokerURI);
}
//根据url创建工厂实例
BrokerFactoryHandler handler = createBrokerFactoryHandler(brokerURI.getScheme());
//利用工厂handler创建broker(产品)
BrokerService broker = handler.createBroker(brokerURI);
if (startBroker) {
broker.start();
}
return broker;
}
3、BrokerContext
上下文环境,参考spring的ApplicationContext
4、BrokerContextAware
获取上下文环境接口
5、BrokerFilter
Broker的子类,用户可以在broker的操作前后加入一些自己的逻辑以实现像安全这样的逻辑
6、BrokerPlugin和BrokerPluginSupport
BrokerPlugin只有一个方法:
BrokerPluginSupport继承自MutableBrokerFilter并实现BrokerPlugin,实现机制跟BrokerFilter类似。
7、BrokerRegistry
很明显,这里有一个单例模式,一个互斥信号量mutex和一个保存所有BrokerService的map brokers。它是一个注册中心,负责维护所有BrokerSerevice,完成获取、绑定和解绑等操作。
8、BrokerService和BrokerServiceAware
后者是获取BrokerService的接口,前者是一个核心的类,它有自己的声明周期,连接了Connector,Broker,Region等组件,包括创建、注册和移除相关的组件。
8.1、SslBrokerService
在创建连接时提供ssl安全链接
9、TransportConnector
提供通信服务
10、ProductorBrokerExchange和ConsumerBrokerExchange
对Broker和Producer、Broker和Consumer之间的流进行控制,并跟踪记录信息
总结
1、ActiveMQ的特性基本上都是通过BrokerFilter模式加上去的
消息队列核心,相当于一个控制中心,负责路由消息、保存订阅和连接、消息确认和控制事务
1.Broker接口
定义了一些获取broker本身相关信息,添加connection、destination、session、消息生产者、控制事务的接口
1.1 CompositeDestinationBroker
多目的地Broker,Producer可以通过它将生产的消息传给多个destination
1.2 EmptyBroker
空broker
1.3 ErrorBroker
调用的它的方法会抛出BrokerStoppedException
1.4 TransactionBroker
为broker的每个方法提供分布式事务XA支持
2、BrokerFactory(抽象工厂模式)
public static BrokerService createBroker(URI brokerURI, boolean startBroker) throws Exception {
if (brokerURI.getScheme() == null) {
throw new IllegalArgumentException("Invalid broker URI, no scheme specified: " + brokerURI);
}
//根据url创建工厂实例
BrokerFactoryHandler handler = createBrokerFactoryHandler(brokerURI.getScheme());
//利用工厂handler创建broker(产品)
BrokerService broker = handler.createBroker(brokerURI);
if (startBroker) {
broker.start();
}
return broker;
}
3、BrokerContext
上下文环境,参考spring的ApplicationContext
4、BrokerContextAware
获取上下文环境接口
5、BrokerFilter
Broker的子类,用户可以在broker的操作前后加入一些自己的逻辑以实现像安全这样的逻辑
6、BrokerPlugin和BrokerPluginSupport
BrokerPlugin只有一个方法:
BrokerPluginSupport继承自MutableBrokerFilter并实现BrokerPlugin,实现机制跟BrokerFilter类似。
7、BrokerRegistry
很明显,这里有一个单例模式,一个互斥信号量mutex和一个保存所有BrokerService的map brokers。它是一个注册中心,负责维护所有BrokerSerevice,完成获取、绑定和解绑等操作。
8、BrokerService和BrokerServiceAware
后者是获取BrokerService的接口,前者是一个核心的类,它有自己的声明周期,连接了Connector,Broker,Region等组件,包括创建、注册和移除相关的组件。
8.1、SslBrokerService
在创建连接时提供ssl安全链接
9、TransportConnector
提供通信服务
10、ProductorBrokerExchange和ConsumerBrokerExchange
对Broker和Producer、Broker和Consumer之间的流进行控制,并跟踪记录信息
总结
1、ActiveMQ的特性基本上都是通过BrokerFilter模式加上去的
相关文章推荐
- C++随笔:.NET CoreCLR之GC探索(4)
- 指定页面调用文章ECSHOP
- php - 常量
- U3D Distortion
- svn教程及下载地址
- hdu2955 robberies题解(01背包)
- iOS之UIView的用法
- Easy-题目69:342. Power of Four(增补2)
- Node.js开发利器Webstorm的按装和免费使用
- Easy-题目68:1. Two Sum(增补1)
- ACdream 1071 神奇的%系列一
- Scala学习手记1 - 快速体验
- php - 变量
- 2016SDAU课程练习三1007
- 五种函数定义方式----第五种是重点
- ThinkPHP(6)——模板技术
- ThreadPoolExecutor机制
- 初步bash
- iOS中的窗口与视图
- CV图像转换