簡體   English   中英

Vertx Eventbus無法在Java中運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM