Vertx Eventbus 在 Java 中不工作
Vertx Eventbus not working in Java
OS Linux
JDK1.7.0_67
Vert.x2.1.5
刚开始连接 github 上的一些顶点示例。
由于手册想要通过 EventBus 尝试一个简单的 Sender <-> Receiver 示例。许多小时后,没有 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");
}
}
运行 在同一台机器上的单独 JVM 实例中,使用以下 CLI 命令:
vertx run Receiver.java
> Succeeded in deploying verticle
另一个控制台:
vertx run Sender.java
> Succeeded in deploying verticle
您 运行设置顶点的方式,它们将无法相互看到。它们本质上是作为完全独立的进程启动的,并且禁用了集群(默认)。您必须 运行 群集模式中的顶点,以便让它们定位并相互通信。使用 -cluster
选项启用 Hazelcast 集群。您可能还想指定 -host
或 -port
。
如果在此之后您仍然发现偶数总线通信出现问题,请启用 Hazelcast 日志记录并确保两个节点相互看到。如果您的网络不支持多播,您可能需要更改 cluster.xml
(Hazelcast 配置)。
可能对那些使用程序化集群方式的人有所帮助。
请检查您在 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()));
OS Linux JDK1.7.0_67 Vert.x2.1.5
刚开始连接 github 上的一些顶点示例。
由于手册想要通过 EventBus 尝试一个简单的 Sender <-> Receiver 示例。许多小时后,没有 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");
}
}
运行 在同一台机器上的单独 JVM 实例中,使用以下 CLI 命令:
vertx run Receiver.java
> Succeeded in deploying verticle
另一个控制台:
vertx run Sender.java
> Succeeded in deploying verticle
您 运行设置顶点的方式,它们将无法相互看到。它们本质上是作为完全独立的进程启动的,并且禁用了集群(默认)。您必须 运行 群集模式中的顶点,以便让它们定位并相互通信。使用 -cluster
选项启用 Hazelcast 集群。您可能还想指定 -host
或 -port
。
如果在此之后您仍然发现偶数总线通信出现问题,请启用 Hazelcast 日志记录并确保两个节点相互看到。如果您的网络不支持多播,您可能需要更改 cluster.xml
(Hazelcast 配置)。
可能对那些使用程序化集群方式的人有所帮助。 请检查您在 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()));