我是 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")