【问题标题】:Is there a way for the consumer the get the n last messages with KafkaJS?有没有办法让消费者使用 KafkaJS 获取最后一条消息?
【发布时间】:2021-11-25 03:13:19
【问题描述】:

我是 Kafka 和 KafkaJS 的新手。

我试图找到一种方法来获取发送到某个主题的最后 n 条消息,而不是获取该主题的所有未消费消息。

例如,我有一个生产者每秒产生 1 条消息并让它等待 5 秒。

然后,当我启动消费者时,消费者会收到所有 5 条消息。 (只有 1 个消费者在运行,1 个组,1 个分区,与生产者相同的主题)。

KafkaJS 上是否有配置只获取最后 n 条生成的消息?

【问题讨论】:

    标签: javascript apache-kafka kafkajs


    【解决方案1】:

    您可以轮询单个记录,或者提前list the offsets of the topic

    然后你可以seek a consumerhigh_offset - N 并从那里开始投票

    【讨论】:

    • 我明白了,这可能是一种方法,但我需要为它创建一个管理员。消费者本身就没有其他办法吗?我也尝试过await consumer.subscribe({ fromBeginning: false }),因为文档提到:When fromBeginning is true, the group will use the earliest offset. If set to false, it will use the latest offset. The default is false. 但它不起作用,消费者仍然从一开始就获取所有未使用的消息,而不是给出最后一条未使用的消息。另外,您能否举一个轮询单个记录的示例?感谢您的帮助!
    • 为此目的创建 adminclient 没有任何问题。您似乎误解了 fromBeginning 仅用于集群中不存在的 group.id 值。如果已经有一个组具有提交的偏移量,它将始终使用这些存储的值,而不管您的 fromBeginning 值如何
    • 我明白了,太棒了!感谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 2016-01-15
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多