java - 使用 Vert.x 事件总线 'locally'(java,单个 jvm)时是否可以避免序列化?

标签 java vert.x event-bus

我的情况是:

  • 单个 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/

相关文章:

java - 无需 winapi 将项目添加到 Windows 系统菜单

java - 当您的应用程序部署到云时,符合 JCache 标准的分布式缓存如何工作?

Java android EventBus 检测服务器是否发送到手机消息

android - 如何在android中使用事件总线库

java - 安卓 |充气按钮不起作用

java - 我应该如何设计我的 Play2 java 应用程序以便符合 "Play2 thinking"

java - 我的方法如何返回在 lambda 表达式中计算的值?

java - 分块字段的默认值 - (setChunked)

java - 使用 Jackson 序列化 vertx JsonObject

websocket - Vertx SocketJS 在服务器繁忙几秒钟后断开连接