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

问题描述 投票:1回答:1

我有一个垂直创建一个eventbus消费者,如下所示:

    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

我错过了什么吗?

exception vert.x event-bus
1个回答
3
投票

Vert.x默认支持序列化JVM基元,Buffers和JsonObjects。对于其他自定义类型,您需要编写自己的MessageCodec

这里有一些可能有帮助的文档:

  • 官方docs有一些关于此的说明。标题为“消息类型”的部分将是您特别感兴趣的。
  • hereMessageCodec实现的示例。 (此片段中未显示通过EventBus.registerCodec()注册编解码器。)

根据我的口味,我总是使用JsonObject作为消息媒介(因为我的设置使我能够)。为每种域类型编写自定义(反)序列化器似乎很麻烦。

© www.soinside.com 2019 - 2024. All rights reserved.