使用springamqp的默认缓存策略是创建具有多个通道的单个连接。创建的通道数取决于侦听器的并发性。
这给我们带来了一个问题,因为我们有很多监听器,而只有少数消费者并发。rabbit文档建议每个连接使用一位数的通道数。
当我们有几个侦听器时,假设10个,每个侦听器需要5个并发。这将创建一个具有50个通道的单一连接,这远远超出了建议的数量。
我试过和你玩 spring.rabbitmq.cache
属性,但我不知道如何设置它,使每个侦听器都使用自己的5个通道的连接。我更喜欢用5个频道创建10个连接,而不是用50个频道创建1个连接。
有人能给我指出正确的方向吗?
1条答案
按热度按时间vybvopom1#
最简单的解决方案是为每个容器提供自己的连接工厂。
您可以添加
ContainerCustomizer
到容器工厂,并使用它更改每个容器的连接工厂。它将在容器创建之后和启动之前被调用。编辑