2016-04-25 3 views
0

Ich benutze Apache Kafka als meine Storm Auslauf. Ich empfange die Nachrichten von Kafka, bearbeite diese Nachrichten und sende sie zurück an den Kafka.Halten Sie die Reihenfolge in Kafka nach der Wiedergabe von Nachrichten mit Hilfe von Storm

Ich frage mich, ob ich die Nachrichten in der gleichen Reihenfolge halten kann. das heißt

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

Ich benutzte einen Auslauf und einen Bolzen, um zu versuchen, den Auftrag zu halten, aber es wird nicht funktionieren. Ich versuchte auch OpaqueTridentKafkaSpout, aber die Reihenfolge änderte sich noch.

Gibt es also Lösungen, um dieses Problem zu lösen? Danke.

Antwort

0

Kafka garantiert nur die Bestellung innerhalb von Partitionen. Sie können diese Reihenfolge pro Partition innerhalb von Storm beibehalten, wenn Sie fieldsGrouping für die Partitions-ID verwenden und das Ergebnis für das Ergebnisthema auf die gleichen Partitionen schreiben.

+0

Ja! Wenn ich die Nummer der Partition auf 1 ändere, kann ich die Reihenfolge beibehalten. Und wie soll ich die Partitions-ID in meinem Kafka-Auslauf bekommen? –

+0

Ich schaute in den Code von 'KafkaSpout'. Es verwendet intern eine Variable '_currPartitionIndex' - ich denke, Sie müssten' KafkaSpout' patchen, um auf diese Informationen zuzugreifen. Es gibt keine API, um darauf zuzugreifen. –

Verwandte Themen