Многопоточность, вызывающая проблему при ведении журнала Spring SchedulerJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Многопоточность, вызывающая проблему при ведении журнала Spring Scheduler

Сообщение Anonymous »

Я использую планировщик Spring, и мне необходимо распечатывать журнал внутри планировщика Spring каждые 1 минуту. Ниже приведен код и конфигурация весеннего планировщика.

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

@Slf4j
@EnableScheduling
@Component
@RequiredArgsConstructor
public class EventConsumer {

private AtomicReference lastLoggedTime = new AtomicReference(LocalDateTime.now());;

public LocalDateTime getLastLoggedTime() {
return lastLoggedTime.get();
}

public void setLastLoggedTime(LocalDateTime lastLoggedTime) {
if(lastLoggedTime.isAfter(this.lastLoggedTime.get())) {
this.lastLoggedTime.set(lastLoggedTime);
}
else{
log.info("Time trying to update is in past EventConsumer");
}
}

@Scheduled(initialDelay = 5, fixedDelayString = "30000")
public void pollAxonMessages() {

LocalDateTime currentTime = LocalDateTime.now();
if (isLogginEnabled(getLastLoggedTime(),60,currentTime,"Event Consumer")) {
log.info("Started polling ");
setLastLoggedTime(currentTime);
}
}

public boolean isLogginEnabled(LocalDateTime lastLoggedInTime,
Integer loggingInterval,
LocalDateTime currentDateTime,
String consumerName){
log.info("LocalDateTime : {} , loggingInterval : {} , currentDateTime :{} consumerName: {}", lastLoggedInTime, loggingInterval, currentDateTime, consumerName);
return lastLoggedInTime.plusSeconds(loggingInterval).isBefore(currentDateTime);
}

}

YAML file configuration for spring scheduler.

spring:
task:
scheduling:
pool:
size: 8
Я использую весеннюю загрузку версии 2.4.1 и развертываю приложение в облаке PCF Foundary. Проблема в том, что я вижу потоки планирования-2 и планирования-4, работающие внутри потребителя событий, и когда один из потоков (планирование-2) обновляет LastLoggedTime, другой все еще не получает обновление и использует старое значение LastLoggedTime, вызывающее один и тот же оператор печатается дважды за 60 секунд, а не один раз.
Можете ли вы сообщить мне, что я пропустил в приведенном выше коде, что привело к этой проблеме?

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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