问题描述
- 关于使用ActiveMQPooledConnectionFactory的一下问题
-
import javax.jms.Connection; import javax.jms.JMSException; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.jms.pool.PooledConnectionFactory; /** * 内部类的方式实现对connection的单例获取 */ public class JMSConnectionUtill { private PooledConnectionFactory pooledConnectionFactory = null; private static class CreateConnUtil{ private static JMSConnectionUtill instance = new JMSConnectionUtill(); } private JMSConnectionUtill (){ // ConnectionFactory :连接工厂,JMS 用它创建连接 ActiveMQConnectionFactory connectionFactory = null; // 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar connectionFactory = new ActiveMQConnectionFactory( ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616"); pooledConnectionFactory = new PooledConnectionFactory(); pooledConnectionFactory.setConnectionFactory(connectionFactory); //设置最大连接数 pooledConnectionFactory.setMaxConnections(200); //设置最小 pooledConnectionFactory.setMaximumActiveSessionPerConnection(50); //后台对象清理时,休眠时间超过了3000毫秒的对象为过期 pooledConnectionFactory.setTimeBetweenExpirationCheckMillis(3000); } //获取链接 public Connection getConnection(){ Connection connection = null; try { connection = pooledConnectionFactory.createConnection(); } catch (JMSException e) { e.printStackTrace(); } return connection; } public static final JMSConnectionUtill getInstance(){ return CreateConnUtil.instance; } }
我所想问的是,我通过内部类获取PooledConnectionFactory的单例,每次获取连接从这里面获取,避免每次都创建新的连接而消耗大量的资源,但是这样写有没有问题,单就这个获取连接的工具类,有没有不恰当的地方,或者说这样做跟直接创建连接的效果是一直的,另外,求一份关于这方面的优化方案(经过实际检验的),在线等
解决方案
很好很好很好很好很好很好
解决方案二:
不好意思 ,帮不上你的忙 了,想了好久还是想不出
时间: 2025-01-20 09:25:35