我有一个垂直创建一个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
我错过了什么吗?
Vert.x默认支持序列化JVM基元,Buffer
s和JsonObject
s。对于其他自定义类型,您需要编写自己的MessageCodec。
这里有一些可能有帮助的文档:
MessageCodec
实现的示例。 (此片段中未显示通过EventBus.registerCodec()
注册编解码器。)根据我的口味,我总是使用JsonObject
作为消息媒介(因为我的设置使我能够)。为每种域类型编写自定义(反)序列化器似乎很麻烦。