PooledConnectionFactory有两个属性maxConnections,maximumActive。咋一看来,用人类的常识理解,maxConnection应该表示最大可建的connection数,maximumActive应该表示最大活跃的connection数,当pool中的连接数大于最大活跃数时,又超过idleTimeout会被回收线程回收到。
如果是这样理解的,就大错特错了。PooledConnetionFactory的这两个参数根本不是这个意思。
看一下PooledConnectionFactory的组成结构:
注:ConnectionPool其实存储的就是一个ActivemqConnection,起的名字真是蛋疼。
更糟的是上面两个属性也不是我们想的一样。maxConnections表示的是LinkedList中connection的数目。maximumActive表示的是SessionPool中session的最大数目。IdleTime是Connection的回收时间,回收时也不是多线程的,每次getConnection时,都会检测是否超时,如果超时,就是立即回收,此时立即重建,真蛋疼。SeesionPool是用Commons-pool实现的。
上图的结构表示的是一个PooledConnetion维护了一个Map,Map的Key可以是由username,password决定的, LinkedList维护了一个循环链表的ActivemqConnection。每次从LinkedList中的头部取出一个AactivemqConnection,然后再添加到尾部。而这些ActivemqConnection是可以被多线程重用的。Pool实现中也没有connection是否inactive的检测机制,因为ActivemqConnection有自己的heartbeat检测机制。每次发送或接收时候先从ConnectionPool中取出一个connection,如果Connection都用光了,就会重用在链表头部的Connection的SessionPool,所以一个Connection可能会被多个线程使用,但一个session只会对应一个线程,保证上下文隔离性。多线程同享一个物理信道,这需要Activemq有自己的拆包机制,才不会混乱。
这样看来在我们设置PooledConnection时,建议有条件的还是需要把maxConnections设置的大一些。它的默认值是1。maximumActive可以设的相对小一些,它的默认值是500,这值太大,担心内存溢出。IdleTime有条件的可以设置的相对大一些,增加connection的重用时间,默认值是30秒。
- 大小: 23.6 KB
分享到:
相关推荐
在下载`activemq-pool.jar.zip`包后,开发者需要将`activemq-pool.jar`添加到项目的类路径中,并根据项目需求进行配置。`license.txt`文件则包含了该库的许可协议,确保在使用时遵循相应的开源授权规定。 总的来说...
`activemq-pool`主要实现了`PooledConnectionFactory`,这是一个JMS连接工厂的池化版本。它通过创建和管理连接池来避免频繁的创建和销毁JMS连接,这对高并发环境至关重要。连接池的核心概念包括: 1. **连接创建与...
标签:activemq-pool-5.5.0.jar.zip,activemq,pool,5.5.0,jar.zip包下载,依赖包
activemq-pool-5.9.0.jar。。
标签:activemq-pool-5.4.0.jar,activemq,pool,5.4.0,jar包下载,依赖包
标签:activemq-pool-5.8.0.jar,activemq,pool,5.8.0,jar包下载,依赖包
标签:activemq-pool-5.9.1.jar,activemq,pool,5.9.1,jar包下载,依赖包
标签:activemq-pool-5.6.0.jar,activemq,pool,5.6.0,jar包下载,依赖包
activemq-pool-5.8.0-sources.jar
标签:activemq-pool-5.4.3.jar,activemq,pool,5.4.3,jar包下载,依赖包
标签:activemq-pool-5.7.0.jar,activemq,pool,5.7.0,jar包下载,依赖包
标签:activemq-pool-5.5.1.jar,activemq,pool,5.5.1,jar包下载,依赖包
标签:activemq-pool-5.5.0-javadoc.jar,activemq,pool,5.5.0,javadoc,jar包下载,依赖包
标签:activemq-pool-5.9.1-javadoc.jar,activemq,pool,5.9.1,javadoc,jar包下载,依赖包
标签:activemq-pool-5.3.2-sources.jar,activemq,pool,5.3.2,sources,jar包下载,依赖包
标签:activemq-pool-5.7.0-sources.jar,activemq,pool,5.7.0,sources,jar包下载,依赖包
在给定的压缩包"activemq-pool-5.4.1.jar.zip"中,包含了两个主要文件:"activemq-pool-5.4.1.jar"和"license.txt"。"activemq-pool-5.4.1.jar"是核心库,封装了所有必要的类和方法,用于实现和操作ActiveMQ的连接池...
activemq-jms-pool-5.14.4.jar
标签:activemq-jms-pool-5.10.0-sources.jar,activemq,jms,pool,5.10.0,sources,jar包下载,依赖包
标签:activemq-jms-pool-5.9.0.jar,activemq,jms,pool,5.9.0,jar包下载,依赖包