【问题标题】:Consume only topic messages for a given account仅使用给定帐户的主题消息
【发布时间】:2019-11-24 14:49:39
【问题描述】:

我有一项服务可以计算帐户的信誉分数。它将计算结果放入名为“ReputationScores”的 Kafka 主题中。每条消息如下所示:

{ "account" : 12345, "repScore" : 98765}

我希望我的消费者能够使用特定帐户的这些消息。

例如,我想让一个消费者实例仅消费帐户 12345 的主题为“ReputationScore”的消息。该实例可能应该是其消费者组的唯一成员。

Kafka 可以根据消息内容进行过滤吗?最好的方法是什么?

感谢您的帮助。

【问题讨论】:

  • 您可以使用自定义分区器创建特定于 12345 的分区,并将 cosumer 分配给该分区,而不是订阅主题。
  • 你的意思是你想从你的消费者的主题中为任意帐户的值进行 k/v 查找?或者您希望消费者的给定实例处理给定帐户,但要处理所有消息?
  • @A.Dev,谢谢。我会检查一下。
  • @Robin,我已经用一个例子更新了这个问题。感谢您的帮助。
  • 对使用spring Kafka有任何想法吗?我相信你知道卡夫卡偏移确认@JonathanM

标签: apache-kafka kafka-consumer-api


【解决方案1】:

Kafka可以根据消息内容进行过滤吗?

由于 kafka 本身不知道您的数据中有什么,因此无法对其进行索引,因此不易搜索。您需要处理完整的主题并明确检查要解析的反序列化记录。例如,这就是具有简单过滤器操作的流处理应用程序将为您提供的。

如果您想保留按特定项目进行查找的能力,您将需要创建一个分区器来分割您感兴趣的所有数据,或者为每个项目创建一个主题(这实际上只适用于某些用途例,而不是个人用户帐户之类的东西)。

您可以查看将所有事件插入内存数据库,然后针对该数据库执行查询

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-19
    • 2022-01-02
    • 2020-03-19
    • 2017-12-24
    • 2021-11-21
    相关资源
    最近更新 更多