Vert.x @ConsumeEvent 事件列表
Vert.x @ConsumeEvent for a List of events
只是一个与具有对象列表的 @ConsumeEvent
方法相关的快速问题。
可以找到完整的项目示例 here.
长话短说:
- 在消费者端(参见我的 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
class,看我的Config's onStart()方法),看来这个注册会这么晚在问题持续存在的过程中。
知道我是否可以设置处理这两个 @ApplicationScoped
bean 的顺序,或者我是否可以在另一个(更早考虑的)案例中注册 MessageCodec
?
非常感谢!
不直接支持集合和数组。您已经做的是一个很好的解决方法,即将集合包装到 class 中并将该 class 用作事件。
需要注意的是,您不需要注册编解码器,因为如果在 @ConsumeEvent
.
中使用它们,它们会自动注册
如果你想覆盖一个事件编解码器,你可以按照下面的方式做
@ConsumeEvent(value = Config.EBA_CONFIGS_RELOAD, codec = YourCodec.class)
只是一个与具有对象列表的 @ConsumeEvent
方法相关的快速问题。
可以找到完整的项目示例 here.
长话短说:
- 在消费者端(参见我的 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
class,看我的Config's onStart()方法),看来这个注册会这么晚在问题持续存在的过程中。
知道我是否可以设置处理这两个 @ApplicationScoped
bean 的顺序,或者我是否可以在另一个(更早考虑的)案例中注册 MessageCodec
?
非常感谢!
不直接支持集合和数组。您已经做的是一个很好的解决方法,即将集合包装到 class 中并将该 class 用作事件。
需要注意的是,您不需要注册编解码器,因为如果在 @ConsumeEvent
.
如果你想覆盖一个事件编解码器,你可以按照下面的方式做
@ConsumeEvent(value = Config.EBA_CONFIGS_RELOAD, codec = YourCodec.class)