Vertx的EventBus的send和publish方法之间有什么区别?

caz*_*eto 1 vert.x vertx-eventbus

我第一次接触Vertx的EventBus,我意识到有两种提交消息的方法。使用了send或publish方法。我想问:使用这两种方法之间的实际区别是什么?在什么情况下它们分别使用?

Mur*_*rat 8

两个sendpublish用于将消息发送到事件总线地址。但是,两者之间存在一些差异。

通过使用publish

  • 一条消息发送给一个或多个侦听器
  • 将通知所有处理该地址的处理程序
  • 处理人员期望没有答案

通过使用send

  • 一条消息被发送到一个,并且只有一个针对事件总线地址注册的处理程序。
  • 如果注册了多个处理程序,则只会通知一个。接收者将根据文档通过“循环算法”进行选择。
  • 接收者可以回答该消息,该回答可以为空或包含响应正文。还可以指定响应超时。

在实际使用中,publish通知事件已发生非常有用,而send在响应重要的地方进行处理非常方便。

从概念上讲,publish使用发布/订阅模式,而send使用请求/响应模式。