Spring Cloud Bus Kafka: обеспечение получения событий всеми экземплярами без уникальных групп потребителейJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring Cloud Bus Kafka: обеспечение получения событий всеми экземплярами без уникальных групп потребителей

Сообщение Anonymous »

Я использую Spring Cloud Config Server с Kafka, чтобы транслировать обновление RESHREMOTEAPLICATIONEVENT для всех экземпляров приложения, но в настоящее время его получает только один экземпляр. Вот моя настройка: < /p>
  • Spring Cloud Config Repo A < /li>
    Сервер конфигурации со следующими зависимостями Maven: < /li >
    < /ol>

    Код: Выделить всё

    org.springframework.cloud
    spring-cloud-config-server
    
    
    org.springframework.cloud
    spring-cloud-config-monitor
    
    
    org.springframework.cloud
    spring-cloud-starter-bus-kafka
    
    
    Свойства сервера конфигурации:

    Код: Выделить всё

    spring.cloud.bus.enabled=true
    spring.kafka.bootstrap-servers=your-kafka-brokers
    spring.cloud.bus.id=config-server
    spring.cloud.bus.destination=config-topic
    < /code>
    
     В приложении (my-service
    ) сам:

Код: Выделить всё

    
org.springframework.cloud
spring-cloud-starter-stream-kafka

< /code>
и его свойства приложения: < /p>
spring.config.import= //url of config server
spring.cloud.config.enabled=true
spring.cloud.stream.default.group={spring.application.name}
spring.cloud.bus.enabled=true
spring.cloud.bus.refresh.enabled=true
spring.cloud.bus.env.enabled=true
spring.cloud.bus.destination=cloud-config.topic
spring.kafka.bootstrap-servers= //kafka server urls
spring.cloud.stream.kafka.binder.brokers= //kafka urls
Когда я вношу изменения в репозиторий конфигурации и запускаю конечную точку /busrefresh/{application-name}, публикуется следующее событие RefreshRemoteApplicationEvent:

Код: Выделить всё

{
"type": "RefreshRemoteApplicationEvent",
"originService": "config-server",
"destinationService": "my-service:**",
"id": "e9b355bf-e28b-4e31-8a85-0b0434d643b6"
}
И я вижу это Ackremoteaplicationevent

Код: Выделить всё

{
"type": "AckRemoteApplicationEvent",
"originService": "my-service:{instance-id}",
"destinationService": "**",
"ackId": "e9b355bf-e28b-4e31-8a85-0b0434d643b6",
"ackDestinationService": "my-service:**",
"event": "org.springframework.cloud.bus.event.RefreshRemoteApplicationEvent"
}
Насколько я понимаю, это происходит потому, что все экземпляры являются частью одной и той же группы потребителей Kafka, и только один экземпляр получает событие. Хотя я мог бы настроить для каждого экземпляра уникальную группу потребителей (я сделал это, и это доказало свою эффективность), это добавляет сложности (например, управление повторной балансировкой во время перезапусков).
Вопрос:
Есть ли способ настроить Spring Cloud Bus Kafka так, чтобы все экземпляры приложения получали RefreshRemoteApplicationEvent, не требуя уникальных групп потребителей для каждого экземпляра? Или есть альтернативный подход к достижению такого поведения?
Любые советы и предложения будем очень признательны!

Подробнее здесь: https://stackoverflow.com/questions/793 ... unique-con
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»