Spring ApplicationListener уничтожается после одного события - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь использовать EventListener для обработки данных, созданных другим компонентом. Все работает нормально при первом запуске события, но затем EventListener удаляется из списка слушателей.

Вот соответствующая часть слушателя:

@Component
public class Listener implements ApplicationListener<CustomEvent> {

    @Override
    public void onApplicationEvent(CustomEvent event) {
        //do stuff
    }
}

И вот Важные части издателя:

@Component
public class Publisher {
    @Autowired
    private ApplicationEventPublisher applicationEventPublisher;

    public void start() {
        try {
            ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
            exec.scheduleAtFixedRate(new Runnable() {
                @Override
                public void run() {
                    CustomEvent event = new CustomEvent(this, getUpdates());
                    applicationEventPublisher.publishEvent(event);
            }, 0, interval, TimeUnit.SECONDS);
        } catch (Exception e) {
            System.exit(1);
        }
    }
}

И класс CustomEvent:

public class CustomEvent extends ApplicationEvent {
    private List<Update> updates = new ArrayList<>();

    public CustomEvent (Object source, List<Update> updateList) {
        super(source);
        updates = updateList;
    }
    public List<Update> getUpdates() {
        return updates;
    }
}

Исходя из того, что я могу сказать из отладчика, создается впечатление, что bean-компонент Listener уничтожается, когда я не не ожидаю этого. Любая идея, как держать это, чтобы слушать события после первого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...