java - 在“本地”使用 Vert.x 事件总线(java,单个 jvm)时是否可以避免序列化?
问题描述
我的情况是:
- 单JVM
- 仅限 Java(我不需要多语言)
- 我不想支付序列化成本来在总线上发布不可变事件(发布对 java 对象的引用会起作用)。
我了解 vert.x 事件总线的范围比我的用例要广泛得多。
我想到了一个类似于 akka 的行为:当你去分布式时,你必须为你的消息提供序列化,如果你保持本地引用被传递。
有什么可以让我在 Vert.x 中做到这一点的吗?
解决方案
Vert.x 已经有了这样的优化。当发送到同一个 JVM 时,对象不会被序列化或反序列化。
您可以在此处查看实际代码: https ://github.com/eclipse/vert.x/blob/master/src/main/java/io/vertx/core/eventbus/impl/EventBusImpl.java#L372
当你实现你的MessageCodec
,你实际上有两种方法:decodeFromWire()
和transform()
。您只能使用最天真的方法实现转换:
@Override
public Object transform(Object o) {
return o;
}
推荐阅读
- javascript - 如何打印数组的值?
- r - 在一系列日期中查找月份的最后一天
- c# - 在 32 位程序中从 C# 运行 Python 函数(64 位)
- excel - 如何使用excel VBA将文本复制到word
- java - 在 Java 中显示文本文件
- javascript - React-Native:将组件导入 App.js 时出错
- serialization - 如何将数据推送到具有 JSONSerializer 的模型的 ember 存储,因为它是 Ember js 中的 JSONAPISerializer 或 RESTSerializer 的 Serializer?
- javascript - 如何根据条件在可折叠面板内设置折叠的值?-EXTJS
- angular - 您正在公开分享您的 App Secret。不要在浏览器中公开 App Secret:从 Angular 调用 getStream API 时出错
- typescript - 如何处理分配 string|string[] 来键入字符串?