连接工厂

ActiveMQConnectionFactory:ActiveMQ的连接工厂实现,用于创建连接
SingleConnectionFactory:Spring JMS封装的单连接工厂代理,只生成同一个连接(忽略关闭连接),通过动态代理实现。
CachingConnectionFactory:Spring JMS封装的缓存连接工厂代理,继承SingleConnectionFactory,缓存Session、Producer和Consumer,通过动态代理实现。可以通过sessionCacheSize指定缓存大小。缓存的Session按照mode(SESSION_TRANSACTED = 0,AUTO_ACKNOWLEDGE = 1,CLIENT_ACKNOWLEDGE = 2和DUPS_OK_ACKNOWLEDGE = 3)分别存放在单独的List中,用则取,用完归还,建议配合JmsTemplate使用。
1 | |
连接
线程安全,相比较于JDBC的连接(非线程安全)
1 | |
每个连接(ActiveMQConnection)维持一个TaskRunnerFactory(Executor),参数如下:
1 | |
TaskRunner(PooledTaskRunner)是任务(Task(ActiveMQSessionExecutor))的运行者,一个ActiveMQSessionExecutor持有一个TaskRunner
Transport读取消息后先放入ActiveMQSessionExecutor的MessageDispatchChannel结束,同时唤醒TaskRunner。
