首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于在不同计算机上运行的verticles,无法使用事件总线进行通信

对于在不同计算机上运行的verticles,无法使用事件总线进行通信
EN

Stack Overflow用户
提问于 2015-12-14 22:46:01
回答 1查看 471关注 0票数 4

我们尝试使用事件总线在verticles之间建立通信。我们尝试了最简单的乒乓球通信示例-

代码语言:javascript
复制
public class Sender extends AbstractVerticle {
    public static void main(String[] args) {
        Vertx.clusteredVertx(new VertxOptions(),res->{
            res.result().deployVerticle(new Sender());
        });
    }
    @Override
    public void start() throws Exception {
        EventBus eb = vertx.eventBus();
        vertx.setPeriodic(1000, v -> {
            eb.send("ping-address", "ping!", reply -> {
                if (reply.succeeded()) {
                    System.out.println("Received reply: " + reply.result().body());
                } else {
                    System.out.println("No reply");
                }
           });
        });
    }
}

类似地,我们写了写接收器。See the code

如果发送方和接收方都在同一台计算机上运行,则通信成功。但是当它们在不同的机器上运行时,通信就会失败。此外,这似乎不是Hazelcast集群管理器(我们使用的)的问题,因为hazelcast正确地发现了两台机器上的另一个对等体(这从hazelcast的控制台日志中可以明显看出)。

代码语言:javascript
复制
Members [2] {
    Member [192.168.43.12]:5701
    Member [192.168.43.84]:5701 this
}

此外,防火墙并没有在两台机器上都启用,我们可以只使用hazelcast在相同的机器之间建立通信(不使用vertx),并且它工作得很好(例如this)。所以问题可能出在vert-x上。

EN

回答 1

Stack Overflow用户

发布于 2015-12-15 21:12:42

您是否尝试在VertxOptions上设置setClustered(true)?我正在测试这个示例代码,它对我来说工作得很好:

代码语言:javascript
复制
public static void main(String[] args) {
    VertxOptions op = new VertxOptions();
    op.setClustered(true);
    Vertx.clusteredVertx(op, e -> {
        if (e.succeeded()) {
            HelloWorldVerticle hwv = new HelloWorldVerticle();
            e.result().deployVerticle(hwv);
        } else {
            e.cause().printStackTrace();
        }
    });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34269834

复制
相关文章

相似问题

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