Выборы лидера Java Spring KubernetesJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Выборы лидера Java Spring Kubernetes

Сообщение Anonymous »

У меня есть проект Java Spring, который работает в GCP на движке K8s. У меня запущено несколько модулей, и я хочу сделать так, чтобы только один модуль выполнял мои задания cron. Для этого я пытался реализовать выборы лидера, но не смог заставить это работать. Вот некоторые из моих файлов и логики, которые я использовал:
build.gradle (Spring boot 3.2.5)

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

implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.integration:spring-integration-core'
implementation 'org.springframework.integration:spring-integration-http'
implementation 'org.springframework.cloud:spring-cloud-kubernetes-fabric8-autoconfig:2.1.6'
implementation 'org.springframework.cloud:spring-cloud-kubernetes-fabric8-leader:2.1.6'
application.properties

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

spring.application.name=feeds-qa
spring.cloud.kubernetes.leader.enabled=true
spring.cloud.kubernetes.leader.autoStartup=true
Мое задание cron

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

@Component
@Data
@Slf4j
public class MyCronJob {
private final AtomicBoolean isLeader = new AtomicBoolean(false);

@EventListener(OnGrantedEvent.class)
public void handleOnGranted(OnGrantedEvent event) {
isLeader.set(true);
log.info("Leadership granted to this pod.");
}

@EventListener(OnRevokedEvent.class)
public void handleOnRevoked(OnRevokedEvent event) {
isLeader.set(false);
log.info("Leadership revoked from this pod.");
}

@Scheduled(cron = "0 * * * * *")
public void testMultiCronjobTrigger() {
if (isLeader.get()) {
log.info("I am the leader - I triggered the job.");
} else {
log.info("I am not the leader - I did nothing.");
}
}
}
Я пробовал использовать значение Spring.application.name по умолчанию, но оно все равно не работало. Не совсем понимаю, что я делаю неправильно, поскольку я видел некоторые реализации именно таким образом, которые, очевидно, работают.
В моем случае ведущий модуль никогда не выбирается. Все мои модули говорят, что они не являются лидерами, а прослушиватели событий никогда не срабатывают и не получают никаких событий. Любые советы помогут.

Подробнее здесь: https://stackoverflow.com/questions/793 ... r-election
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Выборы лидера Spring Cloud Kubernetes: разные лидеры для разных функций
    Anonymous » » в форуме JAVA
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Выборы лидера Kubernetes с арендой
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Выборы лидера Kubernetes с арендой
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Выборы лидера Kubernetes с арендой
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Интеграция механизма выбора лидера в мое приложение Spring Boot (V2.7), развернутое в кластере Kubernetes
    Anonymous » » в форуме JAVA
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

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