预先验证发送到Kafka主题的消息

Sud*_*kar 3 java apache-kafka

是否可以验证/过滤发送到Kafka主题的消息?

就像,我想确保只有有效的客户端/生产者向我的主题发送消息.我当然可以通过根据某些参数/标准丢弃无效消息来在消费者方面进行验证.但是,如果我想在将消息写入主题之前执行该操作,该怎么办?

比如说,Kafka会收到一条消息,执行一些验证,然后决定是否需要丢弃或将该消息写入主题.这可能吗?

Vla*_*roz 5

简短的回答 - 当前版本的Kafka不支持开箱即用的此类功能.由于Kafka生产者被设计为在单个会话期间与多个代理进行通信,因此没有简单的方法来实现这种ad-hoc过滤.有几个合理的选择仍然存在:

  1. 使用2个主题:一个"公共"主题向所有人开放,允许所有消息;另一个非公开"过滤"主题,在您应用过滤规则后,将由您自己的应用程序填充"public"中的数据.
  2. 如果您在写下来之前绝对需要验证传入的消息,那么您可以隐藏某些形式的代理应用程序背后的实际Kafka代理,这将在将消息写入Kafka之前进行验证