Storm KafkaBolt推送到多个Kafka主题

时间:2018-10-23 10:37:27

标签: apache-kafka apache-storm

我有一个用例,其中有一条消息必须推送到许多kafka主题。 目前,该方法大致如下:

pushToTopics(String msg){
  pushToTopicA(msg);
  pushToTopicB(msg);
  pushToTopicC(msg);
  .
  .
  .
  pushToTopicN(msg);
}

每个PushToTopicX(msg)都有一个条件,当满足条件时,该条件会将消息发布到相应的主题。现在,所有这些逻辑都在终端Bolt上,我们使用KafkaProducer来推送消息。

我正在寻找将其分解为特定主题的方法,更重要的是使用KafkaBolts来推送消息。

storm(v 1.2.2)可能吗?我看到最近才合并了PR,可以创建一个自定义回调,但是我们还没有。

2 个答案:

答案 0 :(得分:0)

KafkaBolt可以根据元组决定哪个topic to send to。您可以只使用拆分器螺栓将邮件拆分为N条邮件,每条邮件都有一个不同的目标主题,然后将所有邮件发送到KafkaBolt。

答案 1 :(得分:0)

我最终解决的方法是创建单独的流,每个流都绑定到目标主题。然后通过特定流上的collector.emit,我可以通过各种螺栓将消息散开,最终使用KafkaBolt将其推送到Kafka。