我的情况是:
- 单个 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;
}
关于java - 使用 Vert.x 事件总线 'locally'(java,单个 jvm)时是否可以避免序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51377833/