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