#java #apache-kafka #spring-kafka
#java #apache-kafka #spring-кафка
Вопрос:
В удаленном облачном кластере kafka брокеры kafka будут обновлены до новой версии (5.1), и поэтому применяется новый протокол kafka.
Теперь я должен обновить свой клиент kafka, чтобы иметь возможность подключаться. Прямо сейчас я использую следующие зависимости, относящиеся к kafka, в моем приложении для весенней загрузки:
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-parent</artifactId>
<version>1.3.8.RELEASE</version>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-kafka</artifactId>
<version>2.0.1.RELEASE</version>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka-test</artifactId>
<version>1.0.3.RELEASE</version>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>1.0.3.RELEASE</version>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.9.0.1</version>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
<version>0.9.0.1</version>
Я уже искал подходящую матрицу совместимости для kafka-клиентов и kafka-брокеров.
- У кого-нибудь есть идея, как успешно выполнить обновление?
- Есть ли у кого-нибудь матрица совместимости для этих зависимостей?
Комментарии:
1. Ясе Доган, как вы это решили?
Ответ №1:
Из https://github.com/spring-cloud/spring-cloud-stream/wiki/Kafka-Client-Compatibility
Матрица совместимости
-------- -------------- ------------------ --------------- -------------
| Spring | Spring for | Spring | kafka-clients | Kafka |
| Cloud | Apache Kafka | Integration | | Broker |
| Stream | | for Apache Kafka | | |
-------- -------------- ------------------ --------------- -------------
| 2.1.x | 2.2.x | 3.1.x | 2.0.0, | 2.0.0, |
| | | | 1.1.x, | 1.1.x, |
| | | | 1.0.x(*) | 1.0.x, |
| | | | | 0.11.0.x(*) |
-------- -------------- ------------------ --------------- -------------
| 2.0.x | 2.1.x | 3.0.x | 1.1.x, | 1.1.x, |
| | | | 1.0.x(*) | 1.0.x, |
| | | | | 0.11.0.x(*) |
-------- -------------- ------------------ --------------- -------------
| 1.3.x | 1.3.x, | 2.3.x, | 0.11.0.x(**), | 0.10.x.x |
| | 1.2.x, | 2.2.x, | 0.10.2.x | or higher |
| | 1.1.x | 2.1.x | | |
-------- -------------- ------------------ --------------- -------------
| 1.2.x | 1.2.x, | 2.2.x, | 0.10.1.x | 0.10.x.x |
| | 1.1.x | 2.1.x | | or higher |
-------- -------------- ------------------ --------------- -------------
Другие источники
Ответ №2:
Согласно документации:
Ранее общим правилом было то, что брокер Kafka, с которым взаимодействовал клиент, должен был быть более новой версией, чем клиент. Теперь более новые версии Java-клиентов и других клиентов, поддерживающих KIP-35, таких как librdkaf, могут возвращаться к более старым типам запросов или выдавать соответствующие ошибки, если функциональность недоступна.
На странице проекта Spring для Apache Kafka есть ссылка на confluent matrix (вместе с совместимостью spring-kafka / kafka-clients).
Ответ №3:
Теперь поддерживается двунаправленная совместимость с клиентами, вам больше не нужно беспокоиться о матрице совместимости, для клиентов с поддержкой KIP-35 подходит любая версия, KIP-35 выпущен из протокола брокера — 0.10.0, Java-клиенты — 0.10.2
см.:
https://cwiki.apache.org/confluence/display/KAFKA/Compatibility Матрица
https://www.confluent.io/blog/upgrading-apache-kafka-clients-just-got-easier/