gpt4 book ai didi

java - 如何防止 Spring AMQP 阻塞未确认的消息?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:15:01 25 4
gpt4 key购买 nike

我有一个 @RabbitListener从方法返回后 Spring AMQP 阻塞的注释方法。底层SimpleRabbitListenerContainerFactory使用 AcknowledgeMode.MANUAL .我还不想在监听器方法中确认消息。

在这种情况下有什么办法可以避免 Spring AMQP 阻塞吗?

更详细

我使用这样的监听器:

@RabbitListener(queues = "#{ @myQueue }")
void recordRequestsFromMyMessages(
@Payload MyMessage myMessagePayload,
@Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag,
Channel channel) {

// record relevant parts of the given message and combine them with
// parts from previous/future messages
// DON'T acknowledge the consumed message, yet; instead only keep a
// record of the channel and the delivery tag
}

由于我在稍后实际(异步)处理它们之前对多条消息进行批处理/合并,所以我不想立即确认已使用的消息。相反,我只想在稍后成功处理消息后执行此操作。

使用我当前的方法,Spring AMQP 在调用上面的 recordRequestsFromMyMessages 方法返回后阻塞,并且不再使用来自同一队列的更多消息。

This SO answer建议批处理应该工作,但是,我不确定如何工作。

最佳答案

“阻塞”的不是容器。

您需要增加容器上的 prefetchCount(默认为 1)- 代理只允许该数量的未确认消息未完成。

关于java - 如何防止 Spring AMQP 阻塞未确认的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37112943/

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