ActiveMQ-JMS(四):回调模式下的线程模型

综述

  • 创建连接时,会创建Transport、InactivityMonitor Worker、InactivityMonitor ReadCheckTimer、InactivityMonitor WriteCheckTimer四个线程。
  • 创建生产者不会创建新线程。
  • 发送消息,不会创建新线程。
  • 创建消费者会创建Session task-x线程,此线程只在运行回调函数时存在,空闲一段时间就会被关闭。新消息到来时再重新创建。每次重新创建,x值加1。
  • 新消息到来时,如果没有Session task-x存在,就会重新创建一个线程,用于运行回调函数。
  • 由于存在前台线程,main()函数线程退出后,应用仍然不会结束。所以要结束应用,必须调用connection.close()函数。

生产者的线程

创建ActiveMQ连接工厂时,没有线程创建。

new ActiveMQConnectionFactory(brokerURL);

创建连接时,创建如下4个线程。其中Transport线程会为每个连接创建一个,其它3个线程只在创建第一个连接的时候创建一次。

  • Thread[ActiveMQ Transport] (Running)
  • Daemon thread[ActiveMQ InactivityMonitor Worker] (running)
  • Daemon thread[ActiveMQ InactivityMonitor ReadCheckTimer] (running)
  • Deamon thread[ActiveMQ InactivityMonitor WriteCheckTimer] (running)
factory.createConnection();

关闭连接,会结束ActiveMQ InactivityMonitor Worker线程。

connection.close()

消费者线程

创建消费者,会创建如下2个线程,一会儿没有使用后,这连个线程就消失了。
- Thread[ActiveMQ Session task-1]
- Thread[ActiveMQ Session task-2]

session.createConsumer(destination);

给消费者设置回调对象,会创建一个线程
- Thread[ActiveMQ Session task-3]

consumer.setMessageListener(this);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值