Как вычислить в коде, на какой раздел Kafka * отправил (и отправил ранее) * сообщение? - PullRequest
1 голос
/ 24 мая 2019

Используя тему и ключ сообщения, Кафка назначает раздел темы на основе:

         ... Utils.Murmur2(bytes) % numPartitions ....

Теперь достаточно просто найти код murmur2. Тем не менее, murmur2 нуждается в семени, которое может изменить ход для запуска.

Мой вопрос: дали ключ, например, последовательность байтов, как я могу вычислить, на какой раздел Kafka отправил бы сообщение с теми же байтами ключа? Предположим последовательное разбиение.

Вооружившись этой информацией, я могу предварительно кэшировать некоторую информацию в разных слушателях разделов по мере отскока приложения.

1 Ответ

0 голосов
/ 24 мая 2019

Семя в Кафке соответствует. Вы можете найти его в исходном коде

https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/common/utils/Utils.java#L394

Следовательно, Utils.toPositive(Utils.murmur2(bytes)) % numPartitions будет всем, что вам нужно

...