Перейти к основному содержимому

Взаимодействие сервиса бизнес-логики с Apache Kafka

Шаблон сервиса бизнес-логики предоставляет готовые решения для работы с Kafka Producer и Kafka Consumer.

Kafka Producer

Настройка Kafka Producer включает следующие шаги:

  1. Активация модуля Producer.

    Следующий блок кода файла application.yaml демонстрирует активацию модуля Producer.

    platform:
    kafka:
    producer:
    starter:
    enabled: true

    Следующий блок кода файла build.gradle демонстрирует добавление зависимости.

implementation 'org.springframework.kafka:spring-kafka'
  1. Настройка дополнительных параметров модуля Producer.

    Следующая таблица демонстрирует дополнительные параметры, которые могут быть заданы в файле application.yaml и переменных окружения.

    Имя параметраПеременная окруженияЗначение по умолчанию
    spring.kafka.producer.bootstrap-serversKafka__Server-
    spring.kafka.producer.key-serializerSPRING_KAFKA_PRODUCER_KEY_SERIALIZERStringSerializer
    spring.kafka.producer.value-serializerSPRING_KAFKA_PRODUCER_VALUE_SERIALIZERStringSerializer
    spring.kafka.producer.acksSPRING_KAFKA_PRODUCER_ACKSall
    spring.kafka.producer.delivery-timeoutSPRING_KAFKA_PRODUCER_DELIVERY_TIMEOUT45000
    spring.kafka.producer.request-timeoutSPRING_KAFKA_PRODUCER_REQUEST_TIMEOUT45000
    spring.kafka.producer.max-blockSPRING_KAFKA_PRODUCER_MAX_BLOCK45000

    Адрес сервера Apache Kafka является обязательным параметром.

В результате настройки в Spring-контексте регистрируется компонент ru.platform.kafka.producer.KafkaProducerProperties, пример использования которого показан в следующем блоке кода.

@Autowired
private KafkaProducerPropertiesBuilder producerBuilder;

public void sendMessage(String topic, String message) {
KafkaProducer<String, String> producer = producerBuilder.build();
// ... отправка сообщения
}

Kafka Consumer

Настройка Kafka Consumer включает следующие шаги:

  1. Активация модуля Consumer.

    Следующий блок кода файла application.yaml демонстрирует активацию модуля Consumer.

    platform:
    kafka:
    consumer:
    starter:
    enabled: true

    Следующий блок кода файла build.gradle демонстрирует добавление зависимости.

    implementation 'org.springframework.kafka:spring-kafka'
  2. Настройка дополнительных параметров модуля Consumer.

    Следующая таблица демонстрирует дополнительные параметры, которые могут быть заданы в файле application.yaml и переменных окружения.

    Имя параметраПеременная окруженияЗначение по умолчанию
    spring.kafka.consumer.bootstrap-serversKafka__Server-
    spring.kafka.consumer.key-deserializerSPRING_KAFKA_CONSUMER_KEY_DESERIALIZERStringDeserializer
    spring.kafka.consumer.value-deserializerSPRING_KAFKA_CONSUMER_VALUE_DESERIALIZERStringDeserializer
    spring.kafka.consumer.enable-auto-commitSPRING_KAFKA_CONSUMER_ENABLE_AUTO_COMMITfalse
    spring.kafka.consumer.auto-offset-resetSPRING_KAFKA_CONSUMER_AUTO_OFFSET_RESET-
    spring.kafka.consumer.group-idtSPRING_KAFKA_CONSUMER_GROUP_ID-
    spring.kafka.consumer.client-idSPRING_KAFKA_CONSUMER_CLIENT_ID-
    platform.kafka.topicPLATFORM_KAFKA_CONSUMER_TOPIC-

    Все параметры являются обязательными.

В результате настройки в Spring-контексте регистрируется компонент ru.platform.kafka.consumer.KafkaConsumerPropertiesBuilder, пример использования которого показан в следующем блоке кода.

@KafkaListener(topics = "${platform.kafka.topic}")
public void listen(String message) {
// ... обработка сообщения
}