作者:太完美无缺_817 | 来源:互联网 | 2022-12-02 17:54
我有一个创建事件总线使用者的顶点,如下所示:
public void start() {
vertx.eventBus().consumer(ADDRESS_REQUEST, this::handleRequestMessage);
}
private void handleRequestMessage(Message 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
我想念什么吗?
1> homerman..:
默认情况下,Vert.x支持序列化JVM原语Buffer
s和JsonObject
s。对于其他自定义类型,您需要编写自己的MessageCodec。
这是一些可能有帮助的文档:
官方文档对此有一些说明。您将特别关注标题为“邮件类型”的部分。
这是一个示例MessageCodec
实现。(此代码段中未显示的是通过进行编解码器的注册EventBus.registerCodec()
。)
为了我的品味,我一直将其JsonObject
用作消息传递媒体(因为我的设置使我能够使用)。为每种域类型编写自定义(反)序列化器似乎很麻烦。