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