java - Vertx Eventbus 无法在 Java 中工作

标签 java vert.x

操作系统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/

相关文章:

java - 无法使用 Guice 和 Vertx 将同一实例注入(inject)多个 Verticles

java - spring-mvc 表单验证

java - 为什么我们不能在带有 ehcache 的 spring 中将 @Cacheable 与静态方法一起使用?

java - 以编程方式分析java堆转储文件

node.js - 水平扩展的 WebSocket 服务器上的负载平衡套接字?

javascript - 亚马逊 ELB 上的 websocket 连接错误

java - Vertx.io 应用程序的单元测试

java - vertx 在集群中启用指标的情况下运行

java - 如何解析 OffsetTime 格式为 HHmmssZ

java - 如何在Fragments中设置RecyclerView OnClickListener?