OS Linux JDK 1.7.0_67 Vert.x 2.1.5
刚刚开始连接github上的一些vertx示例。
由于手册想要尝试一个简单的Sender< - >接收器示例,通过EventBus。几个小时后,没有ping,也没有你好世界。
任何人都有一个想法,我在这个简单的代码上缺少的东西:
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
答案 0 :(得分:6)
您运行顶点的方式,他们无法看到对方。它们基本上是作为完全独立的进程启动的,并且禁用了集群(默认值)。您必须以群集模式运行顶点才能使它们相互定位和通信。使用-cluster
选项启用Hazelcast群集。您可能还想指定-host
或-port
。
如果在此之后继续发现甚至总线通信出现问题,请启用Hazelcast日志记录并确保两个节点相互看到。如果您的网络不支持多播,则可能必须更改cluster.xml
(Hazelcast配置)。
答案 1 :(得分: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()));