2016-09-22 81 views
0

请能有人向我解释什么是这个方法之间的差异之间的区别:使用Vertx “的IAsyncResult” 和 “EventBus消费者”

vertx.evenbus().consumer("test", message -> { 
    .......... 
}); 
vertx.evenbus().send("test", res->{ 
........... 
}); 

和:

public void test(Handler<AsyncResult<JsonObject>> resultHandler){ 
.......... 
} 

test(res->{ 
.......... 
}) 
+1

一个是通过事件总线发送的,另一个不是。对于程序员来说,它看起来可能不是很大的区别(这是整个系统的一个重点),但事件总线版本允许您将逻辑分布到不同机器的不同垂直轴上,并可以独立扩展它们等等。另一方面,事件总线会增加一点复杂性,但这往往是程序员隐藏的,通常只是一个设置问题。 –

+0

感谢** DaDaDom **解释,在响应时间方面......等没有区别? –

回答

2

在vert.x事件总线可以让您快速构建分布式应用程序,而无需知道其他服务正在运行的位置,并且还允许您通过添加侦听公共地址的更多垂直轴进行扩展。

当您使用第一段代码时,实际上是要求vert.x在集群上的任意位置定位一个可以处理该特定类型消息的节点(可能与调用方相同)。"test"

在第二个片段中,如果您更喜欢本地操作,则可以定义处理程序或回调,例如从文件中读取JSON对象后要执行的操作。