首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vert.x2 -> Vert.x3通过EventBus通信

Vert.x2 -> Vert.x3通过EventBus通信
EN

Stack Overflow用户
提问于 2015-09-29 07:57:12
回答 3查看 1K关注 0票数 4

我有一个简单的问题--是否有人试图在集群中同时运行Vert.x2和Vert.x3应用程序,并通过EventBus进行通信?

理论上这应该是可能的,但有人做过吗?)

干杯,米哈ł

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-30 08:35:15

我非常感谢这个问题,因为当我决定将我的2.x应用程序升级到最新版本的Vert.x,即3.x版本时,我就有了同样的想法。

我猜您暴露出了这样一个问题,因为节点间/模块间通信协议至少应该在某种程度上兼容,而且EventBus已经是典型Vert.x应用程序中的模块间通信通道,即使在不同的模块版本之间也需要抽象消息传输。

同时,我不知道有什么开源产品可以提供主要版本之间的API兼容性,因为主要版本通常表示“API将改变”。Vert.x也不例外,在不同版本中开发的眩晕/模块之间的通信可能失败也就不足为奇了,因此即使不值得测试,也应该避免这样的方法。

票数 1
EN

Stack Overflow用户

发布于 2016-04-19 08:24:12

对于3.3发行版,Vert.x正在向2.x系列中添加一个新模块。这个新组件是mod-eventbus3-bridge-client

其思想是,您可以沿着现有的2.x应用程序部署此模块,它将在事件总线2.x和事件总线3.x之间架设桥梁。

您可以在:https://github.com/vert-x/mod-eventbus3-bridge-client/tree/initial-work上看到代码

因此,在Vert.x3中,您需要这样做:

代码语言:javascript
复制
public class Example {

  public static void main(String[] args) {

    Vertx vertx = Vertx.vertx();
    TcpEventBusBridge bridge = TcpEventBusBridge.create(
        vertx,
        new BridgeOptions()
            .addInboundPermitted(new PermittedOptions())
            .addOutboundPermitted(new PermittedOptions()));

    bridge.listen(7000, res -> {
      // example: vertx3 send a message to vertx2
      vertx.eventBus().send("send3", new JsonObject().put("msg", "hello send"));
    });
  }
}

在Vert.x2上,你会做相反的事情:

代码语言:javascript
复制
public class Example extends Verticle {

  @Override
  public void start() {
    final EventBus3 eb = new EventBus3(vertx, getContainer().config(), new Handler<Void>() {
      @Override
      public void handle(Void done) {
        // case #1 vertx3 send a message to vertx2
        eb.registerHandler("send3", new Handler<BridgeMessage>() {
          @Override
          public void handle(BridgeMessage msg) {
            System.out.println(msg.body());
          }
        });
      }
    });

    eb.exceptionHandler(new Handler<Throwable>() {
      @Override
      public void handle(Throwable throwable) {
        throwable.printStackTrace();
      }
    });
  }
}
票数 3
EN

Stack Overflow用户

发布于 2015-11-11 10:03:25

我已经尝试过集群中的Vert.x2和Vert.x3 EventBus。但不是同时。Vert.x2需要JDK1.7,Vert.x3需要JDK1.8或更高版本。我试图在JDK1.8中运行Vert.x2,但没有成功。

因此,我认为不可能在集群中同时运行Vert.x2和Vert.x3应用程序。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32838688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档