Philipp created CAMEL-15874:
-------------------------------

             Summary: Every endpoint using RabbitMQ creates a new connection 
instead of using only one connection
                 Key: CAMEL-15874
                 URL: https://issues.apache.org/jira/browse/CAMEL-15874
             Project: Camel
          Issue Type: Bug
          Components: camel-rabbitmq
    Affects Versions: 3.4.4
         Environment: OS Client: Linux 18.04
OS Server: Linux 18.04
Java: OpenJDK 11

Camel: 3.4.4
SpringBoot: 2.2.0
            Reporter: Philipp
         Attachments: 2020-11-20 16_56_05-RabbitMQ Management.png, 2020-11-20 
16_57_16-RabbitMQ Management.png

Consuming AMQP messages from RabbitMQ like the following results in multiple 
physical connections being set up and used. Instead of using one single 
connection and multiple channels per connection, as RabbitMQ 
[suggests|https://www.rabbitmq.com/channels.html].

{code:xml}
<route id="fooRoute">
    <!-- ... -->
    <from uri="rabbitmq:?queue=foo.queue&amp;skipQueueBind=true"/>
    <!-- ... -->
</route>

<route id="barRoute">
    <!-- ... -->
    <from uri="rabbitmq:?queue=bar.queue&amp;skipQueueBind=true"/>
    <!-- ... -->
</route>
{code}

Also using the following configuration ...

{code:yml}
camel:
  component:
    rabbitmq:
      autoDetectConnectionFactory: true
      skip-exchange-declare: true
      connection-factory: cachedConnectionFactory
{code}

{code:java}
@Configuration
Public class Config{

    @Bean
    ConnectionFactory cachedConnectionFactory() {
        return rabbitConnectionFactory.getRabbitConnectionFactory();
    }
}
{code}

... results in the following log output:

{code}
2020-11-20 16:35:13.854 DEBUG 17625 --- [           main] 
o.a.c.c.rabbitmq.RabbitMQConsumer        : Using executor 
org.apache.camel.util.concurrent.RejectableThreadPoolExecutor@4cd6f08b[Running, 
pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 
0][rabbitmq://?queue=foo.queue&skipQueueBind=true]
2020-11-20 16:35:13.881 DEBUG 17625 --- [           main] 
o.a.c.c.rabbitmq.RabbitMQConsumer        : Created connection: 
amqp://[email protected]:5672/
2020-11-20 16:35:13.892 DEBUG 17625 --- [           main] 
o.a.c.component.rabbitmq.RabbitConsumer  : Created channel: 
AMQChannel(amqp://[email protected]:5672/,1)
2020-11-20 16:35:13.903  INFO 17625 --- [           main] 
o.a.c.i.e.InternalRouteStartupManager    : Route: foo_distributorRoute started 
and consuming from: rabbitmq://

...

2020-11-20 16:35:13.905 DEBUG 17625 --- [           main] 
o.a.c.c.rabbitmq.RabbitMQConsumer        : Using executor 
org.apache.camel.util.concurrent.RejectableThreadPoolExecutor@58835bba[Running, 
pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 
0][rabbitmq://?queue=bar.queue&skipQueueBind=true]
2020-11-20 16:35:13.914 DEBUG 17625 --- [           main] 
o.a.c.c.rabbitmq.RabbitMQConsumer        : Created connection: 
amqp://[email protected]:5672/
2020-11-20 16:35:13.918 DEBUG 17625 --- [           main] 
o.a.c.component.rabbitmq.RabbitConsumer  : Created channel: 
AMQChannel(amqp://[email protected]:5672/,1)
2020-11-20 16:35:13.925  INFO 17625 --- [           main] 
o.a.c.i.e.InternalRouteStartupManager    : Route: bar_distributorRoute started 
and consuming from: rabbitmq://
{code}

See the attached screenshots from the RabbitMQ management dashboard.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to