ActiveMQ-JMS(四):回调模式下的线程模型
2016-11-30 09:57
232 查看
综述
创建连接时,会创建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);
相关文章推荐
- future相比于其他并发设计模式的优势(“回调驱动(多线程环境下)”、“消息/事件驱动(Actor模型中))
- JMS使用ActiveMQ实现Queue和Topic两种模式
- 消息队列:快速上手ActiveMQ消息队列的JMS方式使用(两种模式:Topic和Queue的消息推送和订阅)
- CoClass(即COM接口类),实例化模式和线程模型
- Android-线程通讯设计模式-Handler消息模型
- JMS-activeMq发布订阅模式(非持久订阅)
- 深度剖析java线程安全|内存模型|生产消费者模式|
- ActiveMQ(04):JMS的模型
- ActiveMQ(02):JMS基本概念和模型
- ActiveMQ知识盘点【壹】_JMS介绍及两种消息模式
- JMS消息队列ActiveMQ(发布/订阅模式)
- JMS两种模型,布上apache-activemq服务器JMS(四)
- JMS-activeMq发布订阅模式
- 使用观察者模式实现线程将计算结果回调给多个对象
- ActiveMQ消息中间件简明笔记(2)——队列模式和主题模式应用开发(JMS API)
- JMS两种模型的介绍和ActiveMQ的简单实例
- Netty学习之旅------线程模型前置篇Reactor反应堆设计模式实现(基于java.nio)
- eventloop & actor模式 & Java线程模型演进 & Netty线程模型 总结
- JMS消息队列ActiveMQ(点对点模式)
- 设计C++回调模型(一):设计模式