Выборы лидера Spring Cloud Kubernetes: разные лидеры для разных функцийJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Выборы лидера Spring Cloud Kubernetes: разные лидеры для разных функций

Сообщение Anonymous »

Моей целью было добиться того, чтобы только один модуль моего приложения выполнял запланированное задание.
Я реализовал следующий простой пример, используя функциональность лидера выборов Kubernetes, и он работает:
1. Зависимости Maven:

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

org.springframework.boot
spring-boot-starter-parent
3.3.3




org.springframework.cloud
spring-cloud-kubernetes-fabric8-leader

2.application.yaml:

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

spring:
cloud:
kubernetes:
leader:
enabled: true
autoStartup: true
3.Код с заданием @Scheduled:

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

import lombok.extern.log4j.Log4j2;
import org.springframework.context.event.EventListener;
import org.springframework.integration.leader.event.OnGrantedEvent;
import org.springframework.integration.leader.event.OnRevokedEvent;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Log4j2
@Component
public class ScheduledJob {

private boolean isLeader = false;

@EventListener(OnGrantedEvent.class)
public void onLeaderGranted(OnGrantedEvent event) {
log.info("Leadership granted to this instance.");
isLeader = true;
}

@EventListener(OnRevokedEvent.class)
public void onLeaderRevoked(OnRevokedEvent event) {
log.info("Leadership revoked from this instance.");
isLeader = false;
}

@Scheduled(fixedRate = 2000)
public void foo() {
if (isLeader) {
log.info("I am foo leader.");
} else {
log.info("Skipping foo because I'm not the leader.");
}
}
}
Теперь я хочу реализовать сценарий, в котором разные модули выполняют разные запланированные задания, при этом каждый модуль отвечает за выполнение своего собственного задания, поэтому модуль 1 можно руководитель выполняет задание 1, группа 2 выполняет задание 2.
Задание 1:

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

@Log4j2
@Component
public class ScheduledJob1 {

private boolean isLeader = false;

@EventListener(OnGrantedEvent.class)
public void onLeaderGranted(OnGrantedEvent event) {
log.info("Leadership for ScheduledJob1 granted to this instance.");
isLeader = true;
}

@EventListener(OnRevokedEvent.class)
public void onLeaderRevoked(OnRevokedEvent event) {
log.info("Leadership for ScheduledJob1 revoked from this instance.");
isLeader = false;
}

@Scheduled(fixedRate = 2000)
public void foo1() {
if (isLeader) {
log.info("I am foo 1 leader.");
} else {
log.info("Skipping foo 1 because I'm not the leader.");
}
}
}
Задание 2:

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

@Log4j2
@Component
public class ScheduledJob2 {

private boolean isLeader = false;

@EventListener(OnGrantedEvent.class)
public void onLeaderGranted(OnGrantedEvent event) {
log.info("Leadership for ScheduledJob2 granted to this instance");
isLeader = true;
}

@EventListener(OnRevokedEvent.class)
public void onLeaderRevoked(OnRevokedEvent event) {
log.info("Leadership for ScheduledJob2 revoked from this instance.");
isLeader = false;
}

@Scheduled(fixedRate = 2000)
public void foo2() {
if (isLeader) {
log.info("I am foo2 leader.");
} else {
log.info("Skipping foo2 because I'm not the leader.");
}
}
}
Как этого добиться?
Возможно, с разными ролями, но я не понимаю, как их настроить...
Если нужны разъяснения, дайте знать, заранее спасибо!

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Выборы лидера Java Spring Kubernetes
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Выборы лидера Kubernetes с арендой
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Выборы лидера Kubernetes с арендой
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Выборы лидера Kubernetes с арендой
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Есть ли способ использовать лидеры Kubernetes в нескольких кластерах?
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

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