【发布时间】:2017-11-22 05:47:23
【问题描述】:
我正在尝试了解服务之间消息传递中使用的不同方法。
假设我有一个场景,我需要第一个服务通知另一个用户已请求创建产品,第二个服务应该收到此消息,创建一个产品,然后响应告诉第一个服务一个产品已创建。
我认为命令以及请求/响应适合这种情况,因为第一个服务需要解决另一个特定的问题 服务并将等待反馈。
我的理解是:
事件与命令:
活动:
- 在服务之间提供松散耦合。
- 向所有队列执行发布,对此类消息感兴趣的服务将选择它。
命令:
- 执行发送到特定队列,因此只有使用该队列接收的服务才会使用它。
请求/响应与发布/订阅:
请求/响应:
在 Request/Respond 中,第一个服务请求另一个服务执行操作并等待,直到后者返回响应。
发布/订阅:
第一个服务只需发布消息并继续处理,无需等待反馈或响应。
现在我开始使用 RabbitMQ 和 Masstransit saga (Masstransit.Automatonymous) 来设计消息传递系统,它似乎遵循带有发布/订阅方法的事件。
我的问题是:
我可以使用带有发布的命令或带有请求/响应的事件吗?
我的理解正确吗? sagas 可以与请求/响应一起使用吗?
【问题讨论】:
标签: c# microservices masstransit saga automatonymous