NServiceBus中的Bus.Publish和Bus.Send之间的区别?

Sea*_*ron 29 nservicebus

使用Bus.Publish发布消息和使用Bus.Send发送消息之间有什么本质区别?我希望了解它们之间的区别,以及我何时应该选择使用其中一种.

Ada*_*les 30

发布用于通知多个订阅者特定事件.发布端点将具有订阅存储,以标识将消息发送到的位置.发送通常用于向端点发出命令.命令告诉端点做某事并且不应该期待回复(尽管有时你确实需要回复而NSB支持这个).

您没有看到Send()目标的原因是您通过配置指定目标.在app.config中,您将消息类型(整个程序集或类)映射到目标.执行此操作时,您不必提供目的地.


Gor*_*ord 16

Bus.Publish:当您不知道消息的去向时使用(0到多个订阅者).
Bus.Send:当您向特定处理程序(客户端到服务器)发送消息时.

  • 我们进一步采用语义.发布是一个事件,我们将事件视为"嘿,事情刚刚发生.我不关心你对这些信息做了什么,但是你去了",我们对待Bus.Send作为命令,这意味着"嘿,我需要你做点什么,我关心结果会发生什么(因此知道我将它发送给谁) (5认同)
  • @SeanKearon是的,你是4年前发布的,但对于其他任何人.可以在配置中定义send命令的目标.您并不真正想要您的代码配置信息,因此您可以使用更简单的Send()形式,如果在您的配置中定义了目标,则不会将目标作为参数. (2认同)