风暴 KafkaBolt 推送到多个 Kafka 主题



我有一个用例,其中我有一条消息必须推送到许多 kafka 主题。 目前处于高级别,该方法如下所示:

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

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

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

风暴(v 1.2.2(可能吗?我看到最近合并了一个 PR,它允许创建自定义回调,但我们没有。

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

我最终解决它的方法是创建单独的流,每个流都绑定到目标主题。然后通过特定流上的 collector.emit,我能够跨各种 bolt 扇出消息,最终使用 KafkaBolt 推送到 Kafka。