То, что вы сделали, в порядке.
Если ваша полезная нагрузка содержит много данных, кроме кода области, и вы беспокоитесь о долгом разборе, вы можете отфильтровать сообщения перед выполнением всего анализа в объекте TEST, добавив код области как заголовок
В более поздних версиях Kafka (после 0.11) предлагаются пользовательские заголовки ( KIP-82 )
Если вы хотите реализовать это самостоятельно (или если вы используете более старую версию Kafka), вы можете добавить заголовок к полезной нагрузке вашего сообщения, скажем, в качестве первых 4 байтов сообщения, они будут представлять код города и могут быть извлечены очень быстро до процесса синтаксического анализа.
Полезная нагрузка нового сообщения:
([header-4-bytes],[original-payload-n-bytes])
Так что сделайте свой фильтр на основе заголовка, и если вы обнаружите, что это код города, который вам нужен, создайте свой объект TEST на основе остальной части сообщения (обрежьте первые 4 байта для удаления заголовка).
Кафка не предоставляет каких-либо опций фильтрации, которые могли бы вам помочь, хотя он может отправлять сообщения с ключами в вашем источнике, поэтому, если ваш ключ является кодом города, Кафка гарантирует, что все сообщения с одинаковыми кодами города отправляются к тому же разделу, возможно, может помочь для вашей производительности, если используется правильно.
Производитель также может отправлять сообщения в определенные c разделы, поэтому, если вы знали, что у вас есть фиксированные номера кодов городов, вы также можете определить topi c с номером раздела, равным количеству уникальных кодов зоны, и отправьте каждый код зоны в другой раздел, затем используйте своего Потребителя для доступа только к тем разделам с кодами зоны, которые вы ищете, но в большинстве случаев может быть излишним.