Kafka-Streams сохраняют разделение ввода - PullRequest
2 голосов
/ 09 января 2020

Я хочу знать, существует ли "хороший" способ записи в тот же раздел (номер), из которого получено сообщение с помощью потоков Kafka. У меня есть две Темы с одинаковым количеством разделов и сообщений для отдельных пользователей, где все сообщения для одного пользователя должны быть в одном разделе, чтобы избежать неупорядоченных сообщений для этого пользователя. Целевой раздел должен быть таким же, как входной раздел, чтобы наш мониторинг работал правильно. Я знаю, что у меня есть доступ к исходному разделу в процессоре через ProcessorContext, если я использую процессор-API. Но в StreamsPartitioner у меня есть только ключ, значение и количество разделов. Я мог бы написать процессор, который берет входной раздел и записывает его в ключ, так как мы не используем его ATM, и он содержит только ноль. Но это выглядит очень странно, поскольку каждая запись в одном разделе будет иметь один и тот же ключ и работать только до тех пор, пока нам не понадобится ключ для хранения реальных данных. Я мог бы также проанализировать значение и извлечь идентификатор, который используется для вычисления раздела, но он также плохо себя чувствует, поскольку он включает разбор строк и кажется ненужным, потому что у меня уже есть раздел на один шаг раньше в процессоре. Есть ли способ сохранить разделение без изменений для потока таким образом, чтобы он не включал разбор сообщения, которое я сериализовал прямо перед злоупотреблением ключом?

...