2016-02-29 8 views
9

Czy istnieje elegancki sposób na zapytanie o temat Kafki dla konkretnego rekordu? Interfejs API REST, który buduję, otrzymuje identyfikator i musi przejrzeć rekordy powiązane z tym identyfikatorem w temacie Kafki. Jednym ze sposobów jest sprawdzenie każdego rekordu w temacie za pomocą klienta niestandardowego i poszukiwanie dopasowania, ale chciałbym uniknąć napływu czytającego kilka rekordów. Czy Kafka ma szybką, wbudowaną funkcję filtrowania?Temat zapytania Kafki dla konkretnego rekordu

+3

Jako Chris zaznacza, Kafka zapewnia pewien mechanizm odzyskiwania poszczególnych rekordów. Ale ostrzegam, że robiąc to nie jest to, do czego przede wszystkim jest przeznaczony Kafka, http://kafka.apache.org/documentation.html#uses. Jeśli używasz Kafki przede wszystkim do pobierania pojedynczych wiadomości z tematu, użycie innego oprogramowania może lepiej pasować do Twojego przypadku użycia. – morganw09dev

+1

Tak, zdecydowałem się wdrożyć konsumenta Kafka, który zapisuje do bazy danych Mongo, a następnie mój REST API może zażądać od niego poszczególnych rekordów. Głosowałem za odpowiedzią Chrisa, ponieważ potwierdziło moje podejrzenie, że nie jest to możliwe (przynajmniej elegancko). – user554481

Odpowiedz

7

Jedynym szybkim sposobem wyszukiwania rekordu w Kafce (dla uproszczenia) jest podział i przesunięcie. Nowa klasa producenta może, poprzez futures, powrócić do partycji i przesunięcia, w których napisano wiadomość. Możesz użyć tych dwóch wartości, aby bardzo szybko pobrać wiadomość.

Jeśli więc identyfikator zostanie usunięty z partycji i przesunięty, można zaimplementować szybkie zapytanie. W przeciwnym razie nie tak bardzo. Oznacza to, że identyfikator obiektu nie jest częścią Twojego modelu danych, ale jest generowany przez kod know-how Kafki.

Może to działa dla ciebie, może nie działa.

+0

[Metoda, która zwraca przyszłość] (https://kafka.apache.org/0101/javadoc/org/apache/kafka/clients/producer/KafkaProducer.html#send (org.apache.kafka.clients.producer.ProducerRecord)) zawierające partycję i przesunięcie – ruhong

1

To może być późno dla ciebie, ale pomoże w jaki sposób inne patrz na to pytanie, teraz jest KSQL, Kafka sql jest open-source strumieniowe SQL silnik

https://github.com/confluentinc/ksql/

+0

AFAIK Kafka Streams wykonuje filtrowanie po stronie klienta, a nie w brokerze. W ten sposób nadal pobierasz wszystkie dane przez sieć. –

+0

Tak, masz poprawne @SergeyKostrukov –

Powiązane problemy