我有一个在给定端点提供 HTTP 请求的处理程序。处理程序通过事件总线向 Verticle 发送消息,该事件总线进行一些外部分页 REST 调用,聚合结果,并将结果返回给处理程序。分页 REST 调用的结果表示为自定义对象列表。如果我只是尝试发送它List
自己,Vertx 会抛出一个异常,抱怨它找不到java.util.ArrayList
.
我试图在 Vertx 中找到“最好的”——即最简单、最有效、最易读/可维护的方式——通过事件总线将这些对象的列表发送回我的处理程序。这些是我所知道并尝试过的选项,有没有更好的方法来实现这一点?
- 将列表序列化为 JSON 并存储在
JsonObject
. 这需要在两端进行明确的序列化/反序列化,这似乎是不必要的:
// Verticle
List<CustomObject> result = method();
JsonObject data = new JsonObject();
data.put("result", Json.encode(result));
msg.reply(data);
// Handler
String serializedList = body.getString("result");
List<CustomObject> list = objectMapper.readValue(serializedList, new TypeReference<List<CustomObject>>(){});
- 为 定义消息编解码器
ArrayList<CustomObject>
。理论上我相信这会起作用,但我在网上看到的消息编解码器的所有示例总是关于为单个 对象创建编解码器,我不完全确定这是否适用于集合。
有没有更简单的方法适合我不知道的用例?谢谢!