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'
Код: Выделить всё
spring.application.name=feeds-qa
spring.cloud.kubernetes.leader.enabled=true
spring.cloud.kubernetes.leader.autoStartup=true
Код: Выделить всё
@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.");
}
}
}
В моем случае ведущий модуль никогда не выбирается. Все мои модули говорят, что они не являются лидерами, а прослушиватели событий никогда не срабатывают и не получают никаких событий. Любые советы помогут.
Подробнее здесь: https://stackoverflow.com/questions/793 ... r-election