[英]Vertx Eventbus not working in Java
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");
}
}
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配置)。
對於那些使用編程方式的聚類的人來說,可能會有所幫助。 請檢查您的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()));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.