IMerage,NServiceBus中的ICommand之间的区别?

时间:2016-02-07 21:02:03

标签: nservicebus

在NServiceBus中,我们有不同的消息类型,如IMessage,ICommand,IEvent,以便在系统之间进行通信。 IMessage,ICommand,IEvent有什么区别? 我们应该使用这些类型的业务场景?

由于

2 个答案:

答案 0 :(得分:4)

正如in the documentation所说:

Message是NServiceBus的通信单位,有两种类型的消息:

    一个或多个发件人使用
  1. command来请求特定接收者的特定操作。没有广播支持。
  2. 单个发件人使用
  3. event通知许多接收者已经发生了某些操作。

答案 1 :(得分:2)

请记住,在SOA中,您有4种消息类型:

  • 命令
  • 事件
  • 文档消息(NServiceBus方面的DataBus功能)
  • 请求 - 回复

正如您可能已经猜到的那样,IMessage对于Request-Reply场景非常方便,它不是命令或事件,而是以非标准方式运行的混合“消息”。另一个有用的场景是:审计跟踪,报告进度,心跳,超时(传奇或预定的重复任务)等。请考虑以下示例:

  • GetActiveUsersCount / GetActiveUsersCountResult
  • 状态讯息:AlmostDone
  • UploadPackageTimeout
  • 进度消息:PreparingData / ProcessingData / AwaitingConfirmation
  • HeartbeatMessage