0

我是 Vert.x 的新手,正在尝试使用 scala 创建 Verticle。虽然我使用事件总线从 vertx 发送消息,但处理程序未收到消息。以下是我的代码:

class HelloWorldEventBusVerticle extends ScalaVerticle {

  override def startFuture(): Future[_] = {

    vertx
      .eventBus()
      .consumer[String]("com.harmeetsingh13.verticle")
      .handler { msg =>
        println(s"Message Body ${msg.body()}")
        msg.body() match {
          case user: String => println(s"Hello $user!! message")
        }
      }
      .completionFuture()
  }
}

object HelloWorldEventBusVerticle extends App {
  val vertex = Vertx.vertx()
  vertex.deployVerticleFuture(ScalaVerticle.nameForVerticle[HelloWorldEventBusVerticle]).onComplete {
    case Success(result) => println(s"Deployment Id is : ${result}")
    case Failure(cause) => cause.printStackTrace()
  }
  vertex.eventBus()
    .send("com.harmeetsingh13.verticle", "James")
}

这段代码有什么问题?

更新

当我添加方法vertex.eventBus().send("com.harmeetsingh13.verticle", "James")时。Future onComplete在这种情况下,事件总线成功接收到消息。但是,当我使用以下代码时,事件处理程序将无法接收消息。

vertex.deployVerticle(ScalaVerticle.nameForVerticle[HelloWorldEventBusVerticle])
vertex.eventBus().send("com.harmeetsingh13.verticle", "James")
4

0 回答 0