gpt4 book ai didi

spring - RabbitMQ:预取消息处理

转载 作者:行者123 更新时间:2023-12-02 09:05:19 24 4
gpt4 key购买 nike

我正在使用 Spring AMQP 与 RabbitMQ 配合使用。这是我的配置:

<rabbit:connection-factory id="connectionFactory"
host="${queue.host}" port="${queue.port}" />
<rabbit:template id="amqpTemplate" connection-factory="connectionFactory" />
<rabbit:admin connection-factory="connectionFactory" />
<rabbit:queue name="${queue.names}" durable="true"
exclusive="false" />
<rabbit:listener-container
connection-factory="connectionFactory" acknowledge="auto" error-handler="airbrakeHandler" prefetch="1000" >
<rabbit:listener ref="consumer" queue-names="${queue.names}" />
</rabbit:listener-container>

如您所见,prefetchCount 为 1000。

我想知道预取的消息是否在消费者中并行处理;即多个线程调用onMessage(Message message)方法。或者消息是按顺序处理的?也就是说,一个线程迭代预取的消息并以顺序方式调用每条消息的 onMessage(Message message) 方法。

我应该注意,处理的顺序对我来说并不重要。事实上,它们一次只处理一个。

提前致谢。

最佳答案

SimpleMessageListenerContainer 配置包含一个 concurrency 参数来设置最大消费者线程数:

concurrency: The number of concurrent consumers to start for each listener.

对于单线程操作,您可以将其设置为“1” - 例如:

<rabbit:listener-container ... prefetch="1000" concurrency="1">
<rabbit:listener ref="consumer" queue-names="${queue.names}" />
</rabbit:listener-container>

更多信息请参见 Spring Docsjavadoc对于SimpleMessageListenerContainer

关于spring - RabbitMQ:预取消息处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26546129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com