连接工厂
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。