Но у нас есть некий механизм опроса, с помощью которого мы периодически опрашиваем сообщения от API. До Spring-Boot 2.7 эти процессы получали TraceId и SpaId от Sleuth, но после обновления до 2.7 это перестало работать.
У нас такая обработка.
Код: Выделить всё
public void start() {
Flux.interval(Duration.ofSeconds(1))
.flatMap(tick -> apiCall())
.flatMap(message -> processing())
.subscribe();
}
После некоторого исследования я изменил реализацию , потому что сыщик должен быть запущен, и @Scheduled — хороший способ сделать это.
Код: Выделить всё
@Scheduled(fixedRate = 500)
public void process() {
if (sink != null) {
sink.next(System.currentTimeMillis());
}
}
public void start() { // start called from main first
Flux.create(emitter -> sink = emitter)
.flatMap(tick -> apiCall())
.flatMap(message -> processing())
.subscribe();
}
Может быть, обновление до Spring Boot 3+ могло бы решить нашу проблему, но на данный момент мы придерживаемся этого.
Можете ли вы объяснить, почему такое поведение может произойти и как мне решить эту проблему?
Большое спасибо!
Подробнее здесь: https://stackoverflow.com/questions/790 ... x-properly