#apache-kafka #apache-kafka-streams
#apache-kafka #apache-kafka-streams
Вопрос:
Мы используем KafkaStreams в наших тестовых экземплярах (ClusterTest) и используем metadataForKey, чтобы получить конкретный экземпляр, в котором ключ находился в нашем хранилище. В тестовых экземплярах это работало нормально. Однако, когда мы перешли в производственные экземпляры (ClusterProd), этот метод начал возвращать значение null, даже несмотря на то, что в хранилище были данные для ключа. Мы смогли подтвердить, что ключ присутствовал в хранилище, так как наши потоковые операции работали нормально. Однако конечная точка, которую мы создали для получения текущего значения по экземплярам, завершается с ошибкой, поскольку она не может получить информацию метаданных.
Мы получаем информацию о метаданных, как показано ниже. Имя хранилища является именем как для тестового, так и для продуктового кластеров: KafkaStreams.metadataForKey(имя_хранения, ключ, новая строка Serializer())
Из журналов сервера я вижу, что свойство application.server было установлено в соответствии с требованиями с соответствующей информацией об экземпляре сервера.
Мой вопрос здесь в том, управляется ли этот метод конфигурацией, зависящей от кластера, поскольку он работает в одном кластере, но не в другом. наша команда инфраструктуры упоминает, что это проблема приложения. Однако код не изменился в кластерах, поэтому я предполагаю, что ошибка не может быть на стороне кода.
ОБНОВЛЕНИЕ: из дополнительных журналов мы обнаружили, что allMetadata возвращает требуемые данные. В нем было 3 записи (мы работаем на 3 экземплярах) и, как и ожидалось, были указаны данные хоста. Есть ли какая-либо причина, по которой это не отображается в опции metadataForKey?
Комментарии:
1. Если
allMetadata()
вернуть его, ноmetadataForKey()
не возвращает, это звучит как ошибка.2. Да .. поднял jira здесь: issues.apache.org/jira/plugins/servlet/mobile#issue/KAFKA-10843