2

docsから、アプリケーションを再起動せずにコンシューマーを動的に変更して、キューからの消費を使用したいと考えています。

Spring RabbitMQ の最新バージョンは同じものをサポートしていることがわかりますが、同じものを変更する手がかり/例/説明はありません。同じものの適切なソースコードや、次のようなパラメーターを渡す方法が表示されませんでしたmaxConcurrentConsumers

Spring 統合とともに Spring RabbitMQ の XML ベースの構成を使用しています

<bean id="rabbitListenerContainerFactory"
      class="org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory">
    <property name="connectionFactory" ref="rabbitConnectionFactory"/>
    <property name="concurrentConsumers" value="3"/>
    <property name="maxConcurrentConsumers" value="10"/>
    <property name="acknowledgeMode" value="AUTO" />
</bean>

<int-amqp:inbound-channel-adapter channel="lowInboundChannel" queue-names="lowLoadQueue" advice-chain="retryInterceptor" acknowledge-mode="AUTO" listener-container="rabbitListenerContainerFactory" />
<int-amqp:inbound-channel-adapter channel="highInboundChannel" queue-names="highLoadQueue" advice-chain="retryInterceptor" acknowledge-mode="AUTO" listener-container="rabbitListenerContainerFactory" />

コンシューマーを動的に構成する方法を教えてもらえますか?

4

1 に答える 1

1

まず第一に、rabbitListenerContainerFactory異なる<int-amqp:inbound-channel-adapter>s で同じものを共有しないでください。

protected void onInit() {
    this.messageListenerContainer.setMessageListener(new ChannelAwareMessageListener() { 

したがって、最後のアダプターのみが勝ちます。反対側から見ると、複数のアダプターを持つ理由さえありません。queue-names="highLoadQueue,lowLoadQueue"単一のアダプターに対して指定できます。の場合は必ずごlistener-container指定ください。queuesSimpleRabbitListenerContainerFactory

実行時にいくつかのオプションを変更したい場合はrabbitListenerContainerFactory、それをいくつかのサービスに注入して、そのsetters.

何か見逃した場合はお知らせください。

于 2015-04-10T15:31:31.097 に答える