[
https://issues.apache.org/jira/browse/CAMEL-15874?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen updated CAMEL-15874:
--------------------------------
Fix Version/s: 3.8.0
> 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
> Priority: Major
> Fix For: 3.8.0
>
> 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&skipQueueBind=true"/>
> <!-- ... -->
> </route>
> <route id="barRoute">
> <!-- ... -->
> <from uri="rabbitmq:?queue=bar.queue&skipQueueBind=true"/>
> <!-- ... -->
> </route>
> {code}
> Also using the following configuration ...
> {code:yaml}
> camel:
> component:
> rabbitmq:
> autoDetectConnectionFactory: true
> skip-exchange-declare: true
> connection-factory: cachedConnectionFactory
> {code}
> {code:java}
> @Configuration
> public class Config{
> private final
> org.springframework.amqp.rabbit.connection.CachingConnectionFactory
> rabbitConnectionFactory;
> // ...
> @Bean
> com.rabbitmq.client.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)