2016-09-22 35 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對象後要執行的操作。