1. 程式人生 > >ActiveMQ原始碼解析(一):聊聊broker

ActiveMQ原始碼解析(一):聊聊broker

一、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模式加上去的