Сообщения

Показаны сообщения с ярлыком "Apache Kafka"

Spring Boot: обмен сообщениями, тестирование с помощью Embedded Kafka

Изображение
Spring для Apache Kafka предоставляет удобный способ тестирования проектов с помощью встроенного брокера Apache Kafka. Чтобы использовать эту функцию, аннотируйте тестовый класс с помощью @EmbeddedKafka из модуля spring-kafka-test. Чтобы автоконфигурация Spring Boot работала с вышеупомянутым встроенным брокером Apache Kafka, необходимо переназначить системное свойство для адресов встроенного брокера (заполняемое EmbeddedKafkaBroker) в свойство конфигурации Spring Boot для Apache Kafka. Есть несколько способов сделать это: 1. Укажите системное свойство для сопоставления адресов встроенных брокеров с серверами spring.kafka.bootstrap в тестовом классе: static { System.setProperty(EmbeddedKafkaBroker.BROKER_LIST_PROPERTY, "spring.kafka.bootstrap-servers"); } 2. Настройте имя свойства в аннотации @EmbeddedKafka: @EmbeddedKafka(topics = "someTopic", bootstrapServersProperty = "spring.kafka.bootstrap-servers") 3. Используйте заполнител...

Spring Boot: обмен сообщениями, дополнительные свойства Kafka

Изображение
Свойства, поддерживаемые автоматической настройкой по большей части (дефис или camelCase) отображаются напрямую в точечные свойства Apache Kafka. Первые несколько из этих свойств применяются ко всем компонентам (производителям (producers), потребителям (consumers), администраторам (admins) и потокам (streams)), но могут быть указаны на уровне компонентов, если вы хотите использовать другие значения. Apache Kafka обозначает свойства со значением HIGH, MEDIUM или LOW. Автоконфигурация Spring Boot поддерживает все свойства HIGH важности, некоторые выбранные свойства MEDIUM и LOW и любые свойства, которые не имеют значения по умолчанию. Только подмножество свойств, поддерживаемых Kafka, доступно непосредственно через класс KafkaProperties. Если вы хотите настроить производителя или потребителя с дополнительными свойствами, которые не поддерживаются напрямую, используйте следующие свойства: spring.kafka.properties.prop.one=first spring.kafka.admin.properties.prop.two=second spring.kaf...

Spring Boot: обмен сообщениями, Kafka Streams

Изображение
Spring для Apache Kafka предоставляет фабричный компонент для создания объекта StreamsBuilder и управления жизненным циклом его потоков. Spring Boot автоматически конфигурирует требуемый компонент KafkaStreamsConfiguration, если kafka-streams находится в пути к классам, а Kafka Streams включены с помощью аннотации @EnableKafkaStreams. Включение Kafka Streams означает, что должны быть установлены серверы идентификатора приложения и загрузчика. Первый может быть настроен с использованием spring.kafka.streams.application-id, по умолчанию это spring.application.name, если не задано. Последний может быть установлен глобально или специально переопределен только для потоков. Несколько дополнительных свойств доступны с использованием выделенных свойств; другие произвольные свойства Kafka могут быть установлены с помощью пространства имен spring.kafka.streams.properties. Чтобы использовать фабричный компонент, просто подключите StreamsBuilder к своему @Bean, как показано в следующем примере:...

Spring Boot: обмен сообщениями, Apache Kafka

Изображение
Apache Kafka поддерживается посредством автоматической настройки проекта spring-kafka. Конфигурация Kafka контролируется внешними параметрами конфигурации в spring.kafka.*. Например, вы можете объявить следующий раздел в application.properties: spring.kafka.bootstrap-servers=localhost:9092 spring.kafka.consumer.group-id=myGroup Чтобы создать topic при запуске, добавьте компонент типа NewTopic. Если topic уже существует, bean игнорируется. Отправка сообщения Spring KafkaTemplate автоматически настраивается, и вы можете автоматически связывать его непосредственно с вашими компонентами, как показано в следующем примере: @Component public class MyBean { private final KafkaTemplate kafkaTemplate; @Autowired public MyBean(KafkaTemplate kafkaTemplate) { this.kafkaTemplate = kafkaTemplate; } // ... } Если свойство spring.kafka.producer.transaction-id-prefix определено, KafkaTransactionManager настраивается автоматически. Кроме того, если bean-ко...