Scala Vert.x 3:无法使用Eventbus接收消息

时间:2017-06-26 12:12:56

标签: scala vert.x event-bus vertx-verticle

我是Vert.x的新手并尝试使用scala创建Verticle。当我使用eventbus从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")

0 个答案:

没有答案