2016-04-25 40 views
0

我使用Apache Kafka作为我的Storm喷头。 我收到来自卡夫卡的消息,处理这些消息,并将它们发送回卡夫卡。在使用Storm重现信息后,通过卡夫卡保留订单

我在想我是否可以保持消息的顺序相同。即

topic01:A,B,C - >风暴 - > topic02:A_,B_,C_

我用一个口和一个螺栓,以尽量保持秩序,但它不会工作。 我也尝试过OpaqueTridentKafkaSpout,但顺序仍然改变。

那么有没有解决方案来解决这个问题? 谢谢。

回答

0

卡夫卡只保证在分区内订购。如果您在分区ID上使用fieldsGrouping并将结果写入结果主题的相同分区,则可以在Storm中为每个分区保留此顺序。

+0

是的!如果我将分区数更改为1,我可以保留该顺序。我应该如何在我的卡夫卡喷嘴中获得分区ID? –

+0

我调查了一下'KafkaSpout'的代码。它在内部使用变量'_currPartitionIndex' - 我想你需要修补'KafkaSpout'来访问这些信息。没有API可以访问它。 –