Vert.x@ConsumeEvent用于事件列表
只是一个与具有对象列表的Vert.x@ConsumeEvent用于事件列表,vert.x,quarkus,Vert.x,Quarkus,只是一个与具有对象列表的@ConsumeEvent方法相关的快速问题。 可以找到完整的项目示例 长话短说: 在消费者方面(参见我的实现),这种方法是可以接受的,并且工作得很好: 但是类似下面的方法会导致Quarkus启动失败,原因是错误ClassNotFoundException:java.util.List: @ConsumeEvent(Config.EBA\u Config\u重新加载) 公共字符串重新加载(列出事件){…} 尽管在启动时注册了一个MessageCodec(在另一个@App
@ConsumeEvent
方法相关的快速问题。
可以找到完整的项目示例
长话短说:
ClassNotFoundException:java.util.List
:
@ConsumeEvent(Config.EBA\u Config\u重新加载)
公共字符串重新加载(列出事件){…}
MessageCodec
(在另一个@ApplicationScoped
类中,请参见我的方法),但这个注册过程似乎会发生得太晚,问题仍然存在@ApplicationScoped
bean的顺序,或者我是否可以在另一个(更早期的)案例中注册MessageCodec
非常感谢 不直接支持集合和数组。您已经做的是一个很好的解决方法,即将集合包装到类中,并将该类用作事件 另外需要注意的是,您不需要注册编解码器,因为如果在
@consumerevent
中使用编解码器,它们将自动注册
如果要覆盖事件编解码器,可以执行以下操作
@ConsumeEvent(value = Config.EBA_CONFIGS_RELOAD, codec = YourCodec.class)
谢谢你的反馈。因此,外卖是:1。不(直接或间接)支持集合和数组。2.注册编解码器确实可以在
@consumerevent
中根据上下文方便地提供。我们能得到这个不受支持的东西的官方参考吗?事实上,我检查了源代码。也许Quarkus团队的人会很快回复并确认。
@ConsumeEvent(Config.EBA_CONFIG_RELOAD)
public String reload(List<ReloadConfigEvent> events) { ... }
@ConsumeEvent(value = Config.EBA_CONFIGS_RELOAD, codec = YourCodec.class)