Pulsar:如果一条消息被 nack'd (negativeAcknowledge()) 啥时候重新发送?

Posted

技术标签:

【中文标题】Pulsar:如果一条消息被 nack\'d (negativeAcknowledge()) 啥时候重新发送?【英文标题】:Pulsar: If a message gets nack'd (negativeAcknowledge()) when will it be redelivered?Pulsar:如果一条消息被 nack'd (negativeAcknowledge()) 什么时候重新发送? 【发布时间】:2021-12-04 00:18:00 【问题描述】:

如果我们无法处理消息(可能是由于某些时间问题或竞争条件)并且我们调用

consumer.negativeAcknowledge(messageId);

什么时候重新交付以重试处理?

我无法从文档中弄清楚交付的默认设置是什么

https://pulsar.apache.org/docs/en/concepts-messaging/#negative-acknowledgement https://pulsar.apache.org/docs/en/concepts-messaging/#acknowledgement-timeout https://pulsar.apache.org/docs/en/reference-configuration/

【问题讨论】:

【参考方案1】:

默认值为 60 秒。 您可以在消费者中配置它:

Consumer<byte[]> consumer = client.newConsumer()
    .topic("my-topic")
    .subscriptionName("my-sub")
    .negativeAckRedelivery(10, TimeUnit.SECONDS)
    .subscribe()

【讨论】:

以上是关于Pulsar:如果一条消息被 nack'd (negativeAcknowledge()) 啥时候重新发送?的主要内容,如果未能解决你的问题,请参考以下文章

被视为代替Kafka的消息队列:Apache Pulsar设计简介

pulsar bookies清理磁盘方法

消息队列 - 死信、延迟、重试队列

主流消息队列Kafka和下一代云原生消息平台Pulsar架构分析

新一代消息中间件-Pulsar

Apache Pulsar 连接被拒绝