4

我有一个 Web 应用程序,一旦在 ActiveMQ 上收到一条消息,它就会在后台运行文本处理作业,该消息由 Spring MessageListener 收听....我遇到的问题是,一旦我处理了大约 30 个后台作业,ActiveMQ停止处理任何消息,Spring 消息侦听器失去其 JMS 连接,有时我在 ActiveMQ 日志中收到错误消息,指出打开的文件太多。

我在 Linux 上针对 ActiveMQ 进程运行了“lsof”(列出打开文件)命令,并注意到对于 JmsTemplate 排队/发布/接收的几乎每条消息,都会打开一个新连接。这是正常的吗?

这是我的配置:

<bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
    <constructor-arg ref="amqConnectionFactory" />
    <property name="exceptionListener" ref="jmsExceptionListener" />
    <property name="sessionCacheSize" value="100" />
</bean>
4

1 回答 1

1

您需要使用 ActiveMQ 提供的 PooledConnectionFactory,您可以在此处查看完整配置。确保你也阅读了JmsTemplate Gotchas

于 2011-06-23T10:57:32.873 回答