vertx IllegalArgumentException:没有类型的消息编解码器 - 如何为自定义类型创建使用者



我有一个垂直点,用于创建事件总线使用者,如下所示:

public void start() {
vertx.eventBus().consumer(ADDRESS_REQUEST, this::handleRequestMessage);
}
private void handleRequestMessage(Message<VWApiConversation> msg) {
VWApiConversation conversation = msg.body();
}

但是当向此地址发送消息时:

vertx.eventBus().send(VehicleStateCoordinatorVerticle.ADDRESS_REQUEST, conversation, deliveryOptions, res -> {

我收到错误:

java.lang.IllegalArgumentException: No message codec for type: class com.vulog.vwgateway.model.VWApiConversation

我错过了什么吗?

默认情况下,Vert.x 支持序列化 JVM 原语、Buffers 和JsonObjects。 对于其他自定义类型,您需要编写自己的消息编解码器。

以下是一些可能会有所帮助的文档:

  • 官方文档对此有一些说明。 标题为"消息类型"的部分将特别感兴趣。
  • 下面是实现MessageCodec示例。(此代码段中未显示通过EventBus.registerCodec()注册编解码器。

为了我的口味,我一直使用JsonObject作为消息传递媒介(因为我的设置使我能够这样做(。 为每种域类型编写自定义(反(序列化程序似乎很麻烦。

最新更新