当前位置: 首页 > 知识库问答 >
问题:

无法使用事件总线对在不同计算机上运行的垂直板进行通信

危宜
2023-03-14

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

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");
                }
           });
        });
    }
}

同样地,我们写了写了接收器。请参阅代码。

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

Members [2] {
    Member [192.168.43.12]:5701
    Member [192.168.43.84]:5701 this
}

此外,两台机器上都没有启用防火墙,我们仅使用hazelcast(不使用vertx)就可以在同一台机器之间建立通信,它工作得很好(例如这个)。因此,问题可能在于vert-x。

共有1个答案

闽鸿宝
2023-03-14

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

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();
        }
    });
}
 类似资料:
  • 我无法在我的Windows 7机器上运行Apache Tomcat。 环境变量设置为: 当我运行startup时。巴特,我收到消息了: 使用CATALINA_BASE:“C:\Program Files\apache-tomcat-7.0.56”,tomcat控制台立即关闭。

  • 我刚刚下载了用于Linux的nifi-0.5.1。 我很感激你的帮助,

  • 问题内容: 我是Postgres的新用户,我敢肯定已经有了答案,但是我找不到。 我需要分析活动日志表中的一些数据,并将结果按时间段分组。 一个简单的问题版本是一个包含三个字段的表: 我要捕获的操作字符串可能是“ create_entry”(是的,我知道这很不错,因为它的数据库设计不错,但我坚持使用它) 我正在寻找的输出是一个报告,该报告按年份和月份显示了“ create_entry”操作的计数。就

  • 问题内容: 我有这个MySQL查询: 返回如下内容: 我真正想要的是末尾的另一列显示运行总计: 这可能吗? 问题答案: 也许这对您来说是一个更简单的解决方案,并且可以防止数据库不得不执行大量查询。这仅执行一个查询,然后在一次通过中对结果进行一点数学运算。 这将为您提供一个额外的RT(运行总计)列。不要错过顶部的SET语句来首先初始化运行的total变量,否则您将只获得一列NULL值。

  • 是否可以使用非类型变量模板进行运行时计算? 想象一下以下情况: 方法应该返回给定整数在模板参数包中的位置。如果参数包中不存在给定的整数,则应生成错误(最好是在编译时)。 另外,我知道如果签名改为 不幸的是,这不是我的选择,因为方法应该是虚拟的。

  • 从PowerShell执行远程服务器参数化批处理文件。 不会在远程计算机上抛出错误或执行命令。 bat文件中的脚本是带有参数的,只能通过命令提示符执行。