Spring AMQP - 将ListenerContainer传递给bean

时间:2017-05-26 08:41:18

标签: java spring dependency-injection amqp spring-amqp

我目前正在尝试将Spring AMQP侦听器容器传递给bean,因为我需要动态更改侦听器的最大数量(但是我有内存限制,因此我需要比侦听器容器提供的更多控制权。框)。

我的想法是创建一个每隔一秒左右调用一次的bean manageListenerContainer,并相应地更改concurrentConsumers属性。

但我无法弄清楚如何将listenerContainer传递给我的bean, 因为id属性已经从一些版本的rabbit:listener-container中删除了。

这是我的监听器容器:

<rabbit:listener-container connection-factory="connectionFactory"
    error-handler="exHandler">
    <rabbit:listener ref="foo" method="listen" queue-names="myQueue" />
</rabbit:listener-container>

我想要注入它的bean:

<bean id="manageListenerContainer" class="background.ManageListenerContainer">
    <property name="listenerContainer" ref="listenerContainer"></property>
</bean>

我发现我可以像这样实例化一个新的listenerContainer

<bean class="org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer" id="listenerContainer">
    <constructor-arg ref="connectionFactory" />
</bean>

但这与连接本身使用的对象不同。

任何人都可以给我一些指示吗?

奥利

2 个答案:

答案 0 :(得分:1)

为此目的,嵌套的rabbit:listener代码有一个id

封闭的listener-container只是公共属性的逻辑表示。真正的ListenerContainer实际上基于rabbit:listener

答案 1 :(得分:0)

这就是诀窍:

$currentTime....