2015-07-08 18 views
7

Ricevo ripetutamente la seguente eccezione quando avvio la mia applicazione di avvio a molla con rabbitmq. L'intero flusso funziona bene anche con le eccezioni riportate di seguito. ha a che fare con l'auto-delete in tramite?Eccezioni in rabbitmq con avvio a molla

08 Jul 2015 16:20:17,652 [ERROR] [SimpleAsyncTaskExecutor-2] SimpleMessageListenerContainer| Failed to check/redeclare auto-delete queue(s). 
    java.util.concurrent.TimeoutException 
     at com.rabbitmq.utility.BlockingCell.get(BlockingCell.java:77) 
     at com.rabbitmq.utility.BlockingCell.uninterruptibleGet(BlockingCell.java:111) 
     at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:37) 
     at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:367) 
     at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:293) 
     at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:621) 
     at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:665) 
     at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:208) 
     at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:444) 
     at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils$1.createConnection(ConnectionFactoryUtils.java:80) 
     at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.doGetTransactionalResourceHolder(ConnectionFactoryUtils.java:130) 
     at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.getTransactionalResourceHolder(ConnectionFactoryUtils.java:67) 
     at org.springframework.amqp.rabbit.core.RabbitTemplate.doExecute(RabbitTemplate.java:1035) 
     at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:1028) 
     at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:1004) 
     at org.springframework.amqp.rabbit.core.RabbitAdmin.getQueueProperties(RabbitAdmin.java:254) 
     at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.redeclareElementsIfNecessary(SimpleMessageListenerContainer.java:963) 
     at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$300(SimpleMessageListenerContainer.java:83) 
     at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1081) 
     at java.lang.Thread.run(Thread.java:745) 

08 Jul 2015 16:52:47,148 [WARN ] [SimpleAsyncTaskExecutor-1] SimpleMessageListenerContainer| Consumer raised exception, processing can restart if the connection factory supports it 
java.util.concurrent.TimeoutException 
    at com.rabbitmq.utility.BlockingCell.get(BlockingCell.java:77) 
    at com.rabbitmq.utility.BlockingCell.uninterruptibleGet(BlockingCell.java:111) 
    at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:37) 
    at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:367) 
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:293) 
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:621) 
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:665) 
    at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:208) 
    at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:444) 
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils$1.createConnection(ConnectionFactoryUtils.java:80) 
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.doGetTransactionalResourceHolder(ConnectionFactoryUtils.java:130) 
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.getTransactionalResourceHolder(ConnectionFactoryUtils.java:67) 
    at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:434) 
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1083) 
    at java.lang.Thread.run(Thread.java:745) 

i seguenti sono i miei fagioli

<rabbit:queue id="reportQueue" name="reportQueue" durable="true" auto-delete="false" exclusive="false"/> 


<rabbit:direct-exchange id="reportExchange" durable="true" name="reportExchange"> 
    <rabbit:bindings> 
     <rabbit:binding queue="reportQueue" key="reportBind"></rabbit:binding> 
    </rabbit:bindings> 
</rabbit:direct-exchange> 


    <bean id="aListener" class="com.sample.ReportMessageListener" autowire="byName"/> 
    <bean id="reportMessageConverter" class="com.sample.ReportMessageConverter"/> 
<rabbit:listener-container id="myListenerContainer" connection-factory="connectionFactory" acknowledge="auto" prefetch="5" concurrency="1" message-converter="reportMessageConverter" > 
    <rabbit:listener ref="aListener" queues="reportQueue"/> 
</rabbit:listener-container> 

Aggiornamento:

con il debug abilitato i messaggi sono

09 Jul 2015 14:46:35,284 [DEBUG] [main] SimpleMessageListenerContainer| Starting Rabbit listener container. 
09 Jul 2015 14:46:38,601 [DEBUG] [elasticsearch[local_jvm_node][clusterService#updateTask][T#1]] service     | [local_jvm_node] processing [routing-table-updater]: execute 
09 Jul 2015 14:46:38,602 [DEBUG] [elasticsearch[local_jvm_node][clusterService#updateTask][T#1]] service     | [local_jvm_node] processing [routing-table-updater]: no change in cluster_state 
09 Jul 2015 14:46:40,324 [ERROR] [SimpleAsyncTaskExecutor-1] SimpleMessageListenerContainer| Failed to check/redeclare auto-delete queue(s). 
java.util.concurrent.TimeoutException 
    at com.rabbitmq.utility.BlockingCell.get(BlockingCell.java:77) 
    at com.rabbitmq.utility.BlockingCell.uninterruptibleGet(BlockingCell.java:111) 
    at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:37) 
    at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:367) 
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:293) 
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:621) 
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:665) 
    at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:208) 
    at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:444) 
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils$1.createConnection(ConnectionFactoryUtils.java:80) 
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.doGetTransactionalResourceHolder(ConnectionFactoryUtils.java:130) 
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.getTransactionalResourceHolder(ConnectionFactoryUtils.java:67) 
    at org.springframework.amqp.rabbit.core.RabbitTemplate.doExecute(RabbitTemplate.java:1035) 
    at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:1028) 
    at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:1004) 
    at org.springframework.amqp.rabbit.core.RabbitAdmin.getQueueProperties(RabbitAdmin.java:254) 
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.redeclareElementsIfNecessary(SimpleMessageListenerContainer.java:963) 
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$300(SimpleMessageListenerContainer.java:83) 
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1081) 
    at java.lang.Thread.run(Thread.java:745) 
09 Jul 2015 14:46:40,328 [DEBUG] [SimpleAsyncTaskExecutor-1] BlockingQueueConsumer | Starting consumer Consumer: tags=[{}], channel=null, acknowledgeMode=MANUAL local queue size=0 
09 Jul 2015 14:46:45,333 [DEBUG] [SimpleAsyncTaskExecutor-1] SimpleMessageListenerContainer| Recovering consumer in 5000 ms. 

09 Jul 2015 14:46:50,402 [WARN ] [SimpleAsyncTaskExecutor-1] SimpleMessageListenerContainer| Consumer raised exception, processing can restart if the connection factory supports it 
java.util.concurrent.TimeoutException 
    at com.rabbitmq.utility.BlockingCell.get(BlockingCell.java:77) 
    at com.rabbitmq.utility.BlockingCell.uninterruptibleGet(BlockingCell.java:111) 
    at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:37) 
    at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:367) 
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:293) 
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:621) 
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:665) 
    at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:208) 
    at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:444) 
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils$1.createConnection(ConnectionFactoryUtils.java:80) 
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.doGetTransactionalResourceHolder(ConnectionFactoryUtils.java:130) 
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.getTransactionalResourceHolder(ConnectionFactoryUtils.java:67) 
    at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:434) 
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1083) 
    at java.lang.Thread.run(Thread.java:745) 
09 Jul 2015 14:46:50,403 [INFO ] [SimpleAsyncTaskExecutor-1] SimpleMessageListenerContainer| Restarting Consumer: tags=[{}], channel=null, acknowledgeMode=MANUAL local queue size=0 
09 Jul 2015 14:46:50,403 [DEBUG] [SimpleAsyncTaskExecutor-1] BlockingQueueConsumer | Closing Rabbit Channel: null 
+0

vedere se questo può aiutare http://stackoverflow.com/questions/24373588/deleted-queue-is-not-redefined-consumers-stop-to-handle-messages –

+0

avete fatto mai risolto? qual è stata la soluzione. –

risposta

1

Non ha nulla a che fare con auto-elimina code (eccetto il fatto che tu hai qualche mezzo Il contenitore sta inizializzando la connessione in questo particolare punto del suo ciclo di vita).

Lei sembra avere alcuni problemi di rete ...

java.util.concurrent.TimeoutException 
.... 
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:293) 

La libreria client RabbitMQ ha un hard-coded 5 secondi timeout durante l'attesa per la risposta per il collegamento comando di marcia e il server non è rispondendo in tempo.

+1

sto eseguendo il client e rabbitmq sulla stessa macchina. e anche con questi messaggi di errore (questi messaggi sono continui e non una tantum) il produttore e il consumatore stanno passando bene i messaggi. se questo è un problema di connessione, credo che l'intera cosa non dovrebbe funzionare. Perfavore, correggimi se sbaglio. – Pradeep

+0

Forse i problemi sono transitori? Se attivi la registrazione DEBUG, dovresti ottenere molte più informazioni. So che il materiale di timeout è stato aggiunto solo di recente al client di coniglio utilizzato da Spring AMQP, quindi potrebbe esserci qualche nuovo problema lì; un registro DEBUG dovrebbe aiutare. Se è troppo grande per postare qui, prova pastebin o un github gist. –

+0

Sì, il problema è transitorio. Ma ottengo questi 8 su 10 volte inizio la mia applicazione. Aggiunti i messaggi con debug abilitato nella domanda. Per favore fatemi sapere se avete bisogno di qualcosa. Nel frattempo, sto cercando di indagare provando alcune altre proprietà. – Pradeep

3

Il riavvio di RabbitMQ è stato risolto per me (Mac).

cd /usr/local/sbin 
./rabbitmqctl stop_app 
./rabbitmqctl start_app 
0

Penso che riguardi la tua versione con coniglio di primavera. Ho incontrato lo stesso problema di te. ma non ho idea di aggiustarlo. Ma nel mio altro progetto, funziona bene. Poi ho confrontato due progetti. Ho scoperto che la versione coniglio primaverile è diversa l'una dall'altra.

<dependency> 
    <groupId>org.springframework.amqp</groupId> 
    <artifactId>spring-rabbit</artifactId> 
    <version>1.6.5.RELEASE</version> 
</dependency> 

questa nuova versione lancia TimeoutException. ma

<dependency> 
    <groupId>org.springframework.amqp</groupId> 
    <artifactId>spring-rabbit</artifactId> 
    <version>1.4.5.RELEASE</version> 
</dependency> 

questa versione funziona bene. la mia versione con avvio a molla è "Camden.SR2". Spring default 1.6.5.RELEASE.

Spero che ti aiuta