我试图理解服务之间消息传递中使用的不同方法。
让我们说我有一个场景,我需要第一个服务通知对方用户要求创建产品,第二个服务应该收到此消息,创建产品然后回复告诉第一个服务产品已经创建。
我认为命令以及请求/响应都适合这种情况,因为第一个服务需要解决另一个特定问题 服务并等待反馈。
我的理解是:
事件与命令:
活动:
命令:
请求/响应与发布/发布:
请求/回应:
在请求/响应来自另一方的第一个服务请求执行操作并等待,直到从后面返回响应。
发布/订阅:
第一项服务只是发布消息并继续处理而无需等待反馈或响应。
现在我开始使用RabbitMQ和Masstransit saga(Masstransit.Automatonymous)设计消息传递系统,它似乎遵循使用发布/订阅方法的事件。
我的问题是:
我可以使用带有发布的命令或带有请求/响应的事件吗?
我的理解是否正确?并且sagas可以与请求/响应一起使用吗?
答案 0 :(得分:4)
一般来说,您的理解是正确的。不过,我也会在这里总结一下:
MassTransit sagas with Automatonymous支持任何类型的消息处理。您需要将saga消耗的所有消息映射为状态机事件,但这些消息可以是命令和事件 - 从技术上讲它并不重要。 Sagas可以发布和发送消息,也可以发送请求并等待回复。
当您对发布命令和使用事件进行请求 - 响应提出疑问时。 Techicannsly,MassTransit在消息类型上没有区别。您发布的所有内容都是一个事件。您发送的东西可以是命令,也可以是其他东西,但这不是事件。当您使用请求 - 响应时,您必须发送到特定端点,所以这绝对不是一个事件。