Vert.x @ConsumeEvent 事件列表

Vert.x @ConsumeEvent for a List of events

只是一个与具有对象列表的 @ConsumeEvent 方法相关的快速问题。 可以找到完整的项目示例 here.

长话短说:

  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) { ... }
  1. 虽然启动时注册了一个MessageCodec(另一个@ApplicationScopedclass,看我的Config's onStart()方法),看来这个注册会这么晚在问题持续存在的过程中。

知道我是否可以设置处理这两个 @ApplicationScoped bean 的顺序,或者我是否可以在另一个(更早考虑的)案例中注册 MessageCodec

非常感谢!

不直接支持集合和数组。您已经做的是一个很好的解决方法,即将集合包装到 class 中并将该 class 用作事件。

需要注意的是,您不需要注册编解码器,因为如果在 @ConsumeEvent.

中使用它们,它们会自动注册

如果你想覆盖一个事件编解码器,你可以按照下面的方式做

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