2016-09-22 2 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

Один отправляется через eventbus, а другой нет. Для программиста это может показаться большой разницей (что является своеобразной точкой всей системы), но версия eventbus позволяет распределять логику на разные вертикали между разными машинами, масштабировать их независимо и т. Д. На с другой стороны, eventbus ДОЛЖЕН добавить немного сложности, но часто скрывается от программиста и часто просто проблема с настройкой. –

+0

Спасибо ** DaDaDom ** за объяснение, в течение времени отклика ... и т.д. нет никакой разницы? –

ответ

2

В vert.x eventbus - это то, что позволяет быстро создавать распределенное приложение, не зная, где работают другие службы, а также позволяет масштабировать, добавляя больше вершин, прослушивающих общий адрес.

Когда вы используете первую часть кода, вы на самом деле просите vert.x найти в любом месте кластера узел (который может быть таким же, как и вызывающий), который может обрабатывать этот тип сообщения "test".

Во втором фрагменте вы определяете обработчик или обратный вызов, если вы предпочитаете локальное действие, например, что делать, если объект JSON считывается из файла.

Смежные вопросы