gpt4 book ai didi

apache-pulsar - 非持久消息在吞吐量高时丢失

转载 作者:行者123 更新时间:2023-12-05 03:30:16 25 4
gpt4 key购买 nike

我发现即使我的 Pulsar 客户端已启动并正在运行,非持久性消息有时也会丢失。那些非持久化的消息在吞吐量很高(很短的时间内超过1000条消息。我个人认为这并不高)时丢失。如果我增加参数 receiverQueueSize 或将消息类型更改为持久消息,问题就消失了。

我查看了 Pulsar 源代码(我不确定这是最新的)

https://github.com/apache/pulsar/blob/35f0e13fc3385b54e88ddd8e62e44146cf3b060d/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentDispatcherMultipleConsumers.java#L185

而且我认为如果没有消费者可以处理新到达的非持久消息,Pulsar 会简单地忽略那些非持久消息。这里的“无消费者”是指

  • 没有消费者订阅该主题
  • 或者所有消费者都忙于处理之前收到的消息

我的理解正确吗?

最佳答案

Pulsar broker 不会为非持久主题做任何消息缓冲,因此如果消费者未连接或已连接但跟不上生产者,消息将被简单地丢弃。

这样做是因为任何内存缓冲无论如何都会非常有限并且不足以改变任何语义。

非持久性主题实际上是为数据丢失是可以接受的情况的用例而设计的(例如:传感器数据每 1 秒更新一次,您只关心最后一个值)。对于所有其他情况,一个持久的主题是可行的方法。

关于apache-pulsar - 非持久消息在吞吐量高时丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70872157/

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