操作系统Linux JDK 1.7.0_67 Vert.x 2.1.5
刚刚开始连接 github 上找到的一些 vertx 示例。
由于手册想要通过 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
最佳答案
按照您运行顶点的方式,它们将无法看到彼此。它们本质上是作为完全独立的进程启动的,并且禁用了集群(默认)。您必须在集群模式下运行顶点,以便让它们相互定位并通信。使用 -cluster
选项启用 Hazelcast 集群。您可能还需要指定 -host
或 -port
。
如果此后您仍然发现偶数总线通信存在问题,请启用 Hazelcast 日志记录并确保两个节点能够看到对方。如果您的网络不支持多播,您可能必须更改 cluster.xml
(Hazelcast 配置)。
关于java - Vertx Eventbus 无法在 Java 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30983863/