Vert.x @ConsumeEvent для списка событий - PullRequest
0 голосов
/ 15 февраля 2020

Просто быстрый вопрос, связанный с методом @ConsumeEvent, в котором есть список объектов. Полный пример проекта можно найти здесь .

Короче говоря:

  1. На стороне потребителя (см. Мою реализацию ConfigManager ) этот метод принят и работает просто отлично:
@ConsumeEvent(Config.EBA_CONFIG_RELOAD)
public String reload(ReloadConfigEvent event) { ... }

, но метод, подобный приведенному ниже, приводит к сбою запуска Quarkus из-за ошибки ClassNotFoundException: java.util.List<org.acme.config.events.ReloadConfigEvent>:

@ConsumeEvent(Config.EBA_CONFIG_RELOAD)
public String reload(List<ReloadConfigEvent> events) { ... }
Хотя MessageCodec регистрируется при запуске (в другом классе @ApplicationScoped, см. Метод onStart () моего Config), похоже, что эта регистрация произойдет настолько поздно, что процесс проблема сохраняется.

Есть идеи, могу ли я установить порядок обработки этих двух @ApplicationScoped бинов или я могу сделать регистрацию MessageCodec в другом (более раннем) рассмотрении случая?

Большое спасибо заранее!

1 Ответ

1 голос
/ 16 февраля 2020

Коллекции и массивы напрямую не поддерживаются. То, что вы уже сделали, - это хороший обходной путь, заключающийся в том, чтобы обернуть коллекцию в класс и использовать этот класс в качестве события.

Еще одно замечание: вам не нужно регистрировать код c, поскольку они регистрируются автоматически, если они используются в @ConsumeEvent.

Если вы хотите переопределить код события c, вы можете сделать, как показано ниже

 @ConsumeEvent(value = Config.EBA_CONFIGS_RELOAD, codec = YourCodec.class)
...