사용할 수 RabbitMq 서버는 Rabbitmq Exchange를 일부 메시지를 생산 및 토끼와 QUEUENAME에 메시지 기지 Listener.but 큐 스피에는 메시지토끼 리스너 Rabbitmq 노드가 다운되면 항상 소비자를 실행하거나 중지
항상 점점없는 경우 있음을 소모하고 때
<bean id="rabbitListenerContainerFactory" class="org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory">
<property name="connectionFactory" ref="connectionFactory" />
<property name="concurrentConsumers" value="5"/>
<property name="maxConcurrentConsumers" value="10"/>
<property name="prefetchCount" value="10"/>
<property name="defaultRequeueRejected" value="false"/>
</bean>
<rabbit:listener-container connection-factory="connectionFactory" concurrency="5" prefetch="10" acknowledge="auto" idle-event-interval="500000000000000">
<rabbit:listener ref="rabbitListenerContainerFactory" queue-names="queue.email" />
<rabbit:listener ref="rabbitListenerContainerFactory" queue-names="queue.sms" />
</rabbit:listener-container>
아래 내가 RabbitMq 노드가 정지되어있는 동안 예외를 받고 없습니다 기대하고 같은 내 코드는
org.springframework.amqp.rabbit.connection.AutoRecoverConnectionNotCurrentlyOpenException: Auto recovery connection is not currently open
at org.springframework.amqp.rabbit.connection.SimpleConnection.isOpen(SimpleConnection.java:95)
at org.springframework.amqp.rabbit.connection.CachingConnectionFactory$ChannelCachingConnectionProxy.isOpen(CachingConnectionFactory.java:1151)
at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.getChannel(CachingConnectionFactory.java:420)
at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.access$1500(CachingConnectionFactory.java:97)
at org.springframework.amqp.rabbit.connection.CachingConnectionFactory$ChannelCachingConnectionProxy.createChannel(CachingConnectionFactory.java:1084)
at org.springframework.amqp.rabbit.core.RabbitTemplate.doExecute(RabbitTemplate.java:1435)
at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:1411)
at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:1387)
at org.springframework.amqp.rabbit.core.RabbitAdmin.getQueueProperties(RabbitAdmin.java:336)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.redeclareElementsIfNecessary(SimpleMessageListenerContainer.java:1114)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$1100(SimpleMessageListenerContainer.java:95)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1333)
at java.lang.Thread.run(Thread.java:745)
C 아무도 우리가이 문제를 피하도록 도울 수 있습니까?
속성 autoRecoveryEnabled는 SimpleListenerContainer factory.i에서 사용할 수 없습니다. CachingConnectionFactory로 확인했습니다. 또한 autoStartup도 사용할 수 있습니다. 해당 구성을 추가하면 도움이됩니다. – Balaji
우리는 그 재산을 장려하고 싶지 않습니다. 1.7.0을 사용하지 않는 한 com.rabbitmq 연결 팩토리를 삽입하지 않으면 기본적으로이 속성이 false입니다 (1.7.0을 사용하는 경우 1.7.5로 업그레이드해야 함) com.rabbitmq 연결 팩토리의 경우 해당 속성을 false로 설정해야합니다. –