我使用 AMQP Camel 从队列 A 读取消息,向消息添加标头并发送到主题 B。每 300 毫秒,队列 A 中就会有 200 条消息。根据日志文件,JMS MessageConsumer 每 1 秒关闭一次。我不知道为什么。有人可以给我提示如何防止 MessageConsumer 关闭吗?
骆驼路线
<bean class="org.messaginghub.pooled.jms.JmsPoolConnectionFactory" id="test-connection-pool">
<property name="connectionFactory" ref="test-connection-factory"/>
<property name="maxConnections" value="2"/>
<property name="maxSessionsPerConnection" value="1000"/>
</bean>
<bean class="org.apache.camel.component.amqp.AMQPComponent" id="amqp">
<property name="connectionFactory" ref="test-connection-pool"/>
</bean>
<routeContext id="test-context" xmlns="http://camel.apache.org/schema/spring">
<route id="route-test">
<from uri="amqp:queue:Q/A?concurrentConsumers=10&maxConcurrentConsumers=10"/>
<setHeader name="TEST_HEADER">
<constant>TEST1234</constant>
</setHeader>
<toD uri="amqp:topic:b"/>
</route>
</routeContext>
日志文件
13:48:14.829 [QpidJMS Connection Executor: ID:5a8c0a33-724e-47c1-a243-6a2c724f8222:1] INFO org.apache.qpid.jms.JmsSession - A JMS MessageConsumer has been closed: JmsConsumerInfo: { ID:5a8c0a33-724e-47c1-a243-6a2c724f8222:1:9:1, destination = Q/A }
13:48:14.839 [Camel (ems-camel) thread #9 - JmsConsumer[Q/A]] WARN org.apache.camel.component.jms.DefaultJmsMessageListenerContainer - Setup of JMS message listener invoker failed for destination 'Q/A' - trying to recover. Cause: Received disposition with role=receiver delivery-id=128 settled=true: unsupported outcome=modified [condition = amqp:not-implemented
....
我还没有尝试过使用 Camel 和 AMQP,但我认为这里有两条路: