Можно ли установить groupId в Spring Boot Stream Kafka при запуске или во время компиляции? - PullRequest
0 голосов
/ 06 июля 2018

Я только начал использовать Spring Boot Stream с Kafka.

Я создал производителя и потребителя. Мне нужно иметь двух идентичных потребителей (практически два микросервиса), но с разным идентификатором группы, чтобы они оба прочитали тему и получили одно и то же сообщение.

Теперь у меня есть groupId в проекте весенней загрузки под ресурсами в файле properties.yml. Можно ли установить это значение во время компиляции в качестве параметра или лучше при запуске?

properties.yml

server:
    port: 8087
eureka:
    client:
        serviceUrl:
            defaultZone: http://IP:8761/eureka
spring:
    application:
        name: employee-producer
    cloud:
        stream:
            kafka:
                binder:
                    brokers: IP:9092
                bindings:
                    greetings-in:
                        destination: greetings
                        contentType: application/json
                    greetings-out:
                        destination: greetings
                        contentType: application/json
    kafka:
                           consumer:
                             group-id: 500
                             client-id: 99

Что-то такое: kafka consumers

1 Ответ

0 голосов
/ 06 июля 2018

В соответствии с требованием вам нужно два потребителя из другой группы (т.е. group.id) по одной и той же теме, чтобы каждое сообщение могло потребляться обоими потребителями

Согласно документации group.id

Уникальная строка, идентифицирующая группу потребителей, к которой принадлежит этот потребитель. Это свойство требуется, если потребитель использует функциональность управления группой с помощью подписки (тема) или стратегии управления смещениями на основе Kafka.

group.id необходимо установить во время инициализации kafkaconsumerfactory

 props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);

Всякий раз, когда новый потребитель группы с qnique group.id добавляется в тему, он будет использовать самые последние сообщения, поскольку по умолчанию auto.offset.reset равен latest

Например:

  1. сначала отправьте 5 сообщений на kafka
  2. теперь добавьте нового потребителя (он не будет использовать эти сообщения, поскольку смещение по умолчанию самое последнее)

Чтобы использовать эти сообщения, необходимо указать смещение самое раннее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...