Vertx Eventbus无法在Java中运行

Ade*_*emC 2 java vert.x

OS 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");
  }
}
Run Code Online (Sandbox Code Playgroud)

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

  }
}
Run Code Online (Sandbox Code Playgroud)

使用以下CLI命令在同一台计算机上的单独JVM实例中运行:

vertx run Receiver.java
> Succeeded in deploying verticle
Run Code Online (Sandbox Code Playgroud)

另一个控制台

vertx run Sender.java
> Succeeded in deploying verticle
Run Code Online (Sandbox Code Playgroud)

kuu*_*ujo 6

你运行顶点的方式,他们将无法看到对方.它们基本上是作为完全独立的进程启动的,禁用了集群(默认).您必须以群集模式运行顶点才能使它们相互定位和通信.使用该-cluster选项启用Hazelcast群集.您可能还想指定-host-port.

如果在此之后继续发现甚至总线通信出现问题,请启用Hazelcast日志记录并确保两个节点相互看到.cluster.xml如果您的网络不支持多播,则可能必须更改(Hazelcast配置).