Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-8742

RabbitMqConsumer did not retry if connection failed

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 2.15.1
    • 2.17.0
    • camel-rabbitmq
    • None
    • Unknown

    Description

      Camel Rabbitmq is used to consume a queue in RabbitMQ.
      Sometimes, the Administrator would delete the queue and create a fresh queue. Or, the Camel container was started while all or some queue was not declared.

      During these period, Camel will fail with the following error:

      [localhost-startStop-1] 14:03:31,824 INFO  org.apache.camel.component.rabbitmq.RabbitMQConsumer - Connection failed, will start background thread to retry!
      java.io.IOException
      	at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
      	at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
      	at com.rabbitmq.client.impl.ChannelN.basicConsume(ChannelN.java:976)
      	at com.rabbitmq.client.impl.ChannelN.basicConsume(ChannelN.java:943)
      	at com.rabbitmq.client.impl.ChannelN.basicConsume(ChannelN.java:935)
      	at org.apache.camel.component.rabbitmq.RabbitMQConsumer$RabbitConsumer.start(RabbitMQConsumer.java:285)
      	at org.apache.camel.component.rabbitmq.RabbitMQConsumer.startConsumer(RabbitMQConsumer.java:109)
      	at org.apache.camel.component.rabbitmq.RabbitMQConsumer.startConsumers(RabbitMQConsumer.java:96)
      	at org.apache.camel.component.rabbitmq.RabbitMQConsumer.doStart(RabbitMQConsumer.java:119)
      	at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
      	at org.apache.camel.impl.DefaultCamelContext.startService(DefaultCamelContext.java:2869)
      	at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRouteConsumers(DefaultCamelContext.java:3163)
      	at org.apache.camel.impl.DefaultCamelContext.doStartRouteConsumers(DefaultCamelContext.java:3099)
      	at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3029)
      	at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:2797)
      	at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:2653)
      	at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:167)
      	at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2467)
      	at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2463)
      	at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2486)
      	at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2463)
      	at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
      	at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2432)
      	at org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:255)
      	at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:121)
      	at org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:332)
      	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:96)
      	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:334)
      	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:948)
      	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
      	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
      	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
      	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
      	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)
      	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
      	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
      	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
      	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
      	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)
      	at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:670)
      	at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1839)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      	at java.lang.Thread.run(Thread.java:745)
      Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; reason: {#method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'ad_google_dfa_reporting_queue' in vhost '/', class-id=60, method-id=20), null, ""}
      	at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
      	at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33)
      	at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:343)
      	at com.rabbitmq.client.impl.ChannelN.basicConsume(ChannelN.java:974)
      	... 43 more
      Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; reason: {#method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'ad_google_dfa_reporting_queue' in vhost '/', class-id=60, method-id=20), null, ""}
      	at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:474)
      	at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:315)
      	at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:144)
      	at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:91)
      	at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:533)
      

      From the log, it shows retrying. But after 45 minutes, nothing happen.

      While waiting for CAMEL-8487 (which i have no idea how to configure ), is there anything i can do for retry to work/happen sooner?

      Attachments

        Activity

          People

            davsclaus Claus Ibsen
            reusable Yap Poh Soon
            Votes:
            1 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: