【问题标题】:Vertx Eventbus not working in JavaVertx Eventbus 在 Java 中不起作用
【发布时间】:2015-06-22 15:25:15
【问题描述】:

操作系统 Linux JDK 1.7.0_67 Vert.x 2.1.5

刚刚开始连接 github 上的一些 vertx 示例。

由于手册想尝试一个简单的 Sender Receiver 示例,通过 EventBus。许多小时后,没有 ping,也没有 hello world。

任何人都有一个想法,我在这个简单的代码中缺少什么:

Sender.java

import org.vertx.java.platform.Verticle;

public class Sender extends Verticle {

  public void start(){
    vertx.eventBus().send("ping-address", "Hello");
  }
}

Receiver.java

import org.vertx.java.core.Handler;
import org.vertx.java.core.eventbus.EventBus;
import org.vertx.java.core.eventbus.Message;
import org.vertx.java.platform.Verticle;

public class Receiver extends Verticle {

  public void start() {
    EventBus eb = vertx.eventBus();
    eb.registerHandler("ping-address", new Handler<Message<String>>(){
        @Override
        public void handle(Message<String> message) {
            container.logger().info("Message: "+message.body());
        }
    });

    container.logger().info("PingVerticle started");

  }
}

使用以下 CLI 命令在同一台机器上的不同 JVM 实例中运行:

vertx run Receiver.java
> Succeeded in deploying verticle

另一个控制台:

vertx run Sender.java
> Succeeded in deploying verticle

【问题讨论】:

    标签: java vert.x


    【解决方案1】:

    按照您运行顶点的方式,它们将无法看到彼此。它们本质上是作为完全独立的进程启动的,并且禁用了集群(默认设置)。您必须在集群模式下运行顶点才能让它们相互定位和通信。使用 -cluster 选项启用 Hazelcast 集群。您可能还想指定-host-port

    如果您在此之后仍然看到总线通信问题,请启用 Hazelcast 日志记录并确保两个节点能够互相看到。如果您的网络不支持多播,您可能需要更改 cluster.xml(Hazelcast 配置)。

    【讨论】:

    • 顺便说一下,这个问题已经在Vert.x Google group上回答了无数次了
    • 谢谢,这拯救了我的一天。不明白为什么官方文档中没有提到这个选项是使用 eventbus 的必备条件。
    • 我知道!我们将尝试确保 Vert.x 3 中关于集群的文档更清晰。我第一次尝试使用它时遇到了同样的问题!
    【解决方案2】:

    可能对那些使用程序化集群方式的人有所帮助。 请检查您是否在 vertx 选项中设置了以下值:

    VertxOptions options = new VertxOptions().setClustered(true)
                    .setClusterHost("198.12.12.12")
                    .setHAEnabled(true)
                    .setHAGroup("dev");
    
     Vertx.clusteredVertx(options, res -> System.out.println(res.succeeded()));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 2021-02-20
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-05
      相关资源
      最近更新 更多