最近在工作中用到ActiveMQ,其中发现每次通过MQ通讯之后即使调用了
consumer.close()
实现关闭订阅,但是依然存在连接,如下图所示
同时非持久订阅数也是同样的在增加,如下图所示
找了一圈发现网上好像没啥答案,然后自己摸索了一轮,原来是跟自己后面调整了最大连接数有关
pooledConnectionFactory.setConnectionFactory(activeMQConnectionFactory);
pooledConnectionFactory.setMaxConnections(nodeMap.get("maxConnections")!=null?Integer.parseInt(nodeMap.get("maxConnections")):20);//主要是这句,调整了默认的最大连接数为20,看着连接数挺多,其实最大就去到20
pooledConnectionFactory.setMaximumActiveSessionPerConnection(nodeMap.get("maximumActiveSessionPerConnection")!=null?Integer.parseInt(nodeMap.get("maximumActiveSessionPerConnection")):500);
pooledConnectionFactory.setCreateConnectionOnStartup(nodeMap.get("createConnectionOnStartup")!=null?Boolean.valueOf(nodeMap.get("createConnectionOnStartup")):true);
pooledConnectionFactory.setReconnectOnException(nodeMap.get("reconnectOnException")!=null?Boolean.valueOf(nodeMap.get("reconnectOnException")):true);
为了防止忘记,在这里记录下哈。如果有不足,也希望各位大神多多指教哈。