最初在论坛上询问 - https://groups.google.com/forum/#!topic/vertx/jdNRWlE6v4Y
我刚刚阅读this thread讨论通过事件总线发送消息的问题,其中没有指定地址的注册处理程序。 我只是好奇人们如何处理这种情况。手动计时器是推荐的方法吗?这种方法会随着时间的推移泄漏内存吗?
来自节点我已经看到了一些解决这类问题的方法:
我对这些或任何其他方法持开放态度,我只是想确保以正确的方式解决这个问题。
有issue开放,但我不知道是否值得查看当前稳定版本(v1.3)的修复程序,或者我是否应该等待v2.0(我的避风港)没有看到任何类型的v2.0的时间表,但在它周围的git repo中确实有很多活动)。
任何指导都会非常感激。
答案 0 :(得分:0)
documentation字面上说:
"如果您发送指定回复处理程序的消息,则永远不会回复 然后,默认情况下,你会留下一个永远不会得到的处理程序 。未登记"
对我来说也听起来很糟糕的默认行为,但幸运的是,自Vert.x 2.0以来我们有了一种发送超时的方法,这看起来像100%的时间。
示例:
eb.sendWithTimeout("test.address", "This is a message", 1000, new Handler<AsyncResult<Message<String>>>() {
public void handle(AsyncResult<Message<String>> result) {
if (result.succeeded()) {
System.out.println("I received a reply " + message.body);
} else {
System.err.println("No reply was received before the 1 second timeout!");
}
}
});