Pool not open;

m0_37930568 2017-03-19 06:13:00
<!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供 -->
<bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<!-- ActiveMQ服务地址 -->
<property name="brokerURL" value="${mq.brokerURL}" />
<property name="userName" value="${mq.userName}"></property>
<property name="password" value="${mq.password}"></property>
</bean>

<!--
ActiveMQ为我们提供了一个PooledConnectionFactory,通过往里面注入一个ActiveMQConnectionFactory
可以用来将Connection、Session和MessageProducer池化,这样可以大大的减少我们的资源消耗。
要依赖于 activemq-pool包
-->
<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
<property name="connectionFactory" ref="targetConnectionFactory" />
<property name="maxConnections" value="${mq.pool.maxConnections}" />
<property name="idleTimeout" value="0"/>
</bean>

<!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->
<bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
<!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->
<property name="targetConnectionFactory" ref="pooledConnectionFactory" />
</bean>
<!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 -->

<!-- 队列模板 -->
<bean id="activeMqJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->
<property name="connectionFactory" ref="connectionFactory"/>
<property name="defaultDestinationName" value="${queueName}"></property>
</bean>

## MQ
mq.brokerURL= **
mq.userName=**
mq.password=**
mq.pool.maxConnections=100
#queueName
queueName=sendMessage


@Service("mqProducer")
public class messageMQProducer {

@Autowired
private JmsTemplate activeMqJmsTemplate;

/**
* 发送消息.
* @param mail
*/
public void sendMessage(final MessageParam message) {
activeMqJmsTemplate.send(new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(JSONObject.toJSONString(message));
}
});
}

}

以上是activeMQ生产者的配置及注入,程序正常启动,而且可以发送消息。 但是 程序运行一段时间后,会报以下异常:
org.springframework.jms.IllegalStateException: 
java.lang.IllegalStateException:
Pool not open;
nested exception is javax.jms.IllegalStateException:
java.lang.IllegalStateException: Pool not open

求赐教。





...全文
573 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxy1420 2017-11-30
  • 打赏
  • 举报
回复
楼主解决了吗 我也遇到这个问题了
逗泥丸的平方 2017-03-21
  • 打赏
  • 举报
回复
引用 4 楼 m0_37930568 的回复:
[quote=引用 3 楼 qq_35209952 的回复:] [quote=引用 2 楼 qq_35209952 的回复:] mq.pool.maxConnections=100 100个应该不少了. 是不是有谁直接jdbc没关连接 或者 哪些操作一直在进行 没释放连接
打习惯了.. 不是jdbc.. 是你这里的session或者connection[/quote] 1、一段时间,时间不定; 2、都是用 spring 的 jms pool 处理connection 和 session的 ,是不是配置的问题?对于这个问题,也没找到合适的解决方案。[/quote] 监控一下数据库的连接数吧....有超过100个吗.. 也可能是数据库不支持100个连接?(这点不太确定,是猜的,按理说应该是报其他的错误吧. )
m0_37930568 2017-03-20
  • 打赏
  • 举报
回复
引用 3 楼 qq_35209952 的回复:
[quote=引用 2 楼 qq_35209952 的回复:] mq.pool.maxConnections=100 100个应该不少了. 是不是有谁直接jdbc没关连接 或者 哪些操作一直在进行 没释放连接
打习惯了.. 不是jdbc.. 是你这里的session或者connection[/quote] 1、一段时间,时间不定; 2、都是用 spring 的 jms pool 处理connection 和 session的 ,是不是配置的问题?对于这个问题,也没找到合适的解决方案。
逗泥丸的平方 2017-03-20
  • 打赏
  • 举报
回复
引用 2 楼 qq_35209952 的回复:
mq.pool.maxConnections=100 100个应该不少了. 是不是有谁直接jdbc没关连接 或者 哪些操作一直在进行 没释放连接
打习惯了.. 不是jdbc.. 是你这里的session或者connection
逗泥丸的平方 2017-03-20
  • 打赏
  • 举报
回复
mq.pool.maxConnections=100 100个应该不少了. 是不是有谁直接jdbc没关连接 或者 哪些操作一直在进行 没释放连接
逗泥丸的平方 2017-03-20
  • 打赏
  • 举报
回复
一定时间后?

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧