基于请求的架构与基于事件的架构

时间:2019-02-25 21:53:01

标签: architecture message-queue messaging event-driven-design request-response

Q1

我知道基于事件的架构与基于请求/驱动的架构之间的根本区别。问题是,基于请求的总是总是以同步方式完成,而基于事件的总是以异步方式完成吗?

第二季度

此外,在API世界(请求-响应)中,如果请求消息无效,通常返回400 http代码。幸运的是,在API世界中,我们可以执行合同测试,从而使集成更加可靠。

除了将消息放入错误队列之外,在消息传递队列中处理类似问题的最佳方法是什么? 首先通知问题是公共服务或消费者服务的责任吗?

1 个答案:

答案 0 :(得分:1)

第一季度

那是根本的区别。事件发布者不在乎谁使用它。在请求/响应中,服务被捆绑在一起。

第二季度

在事件驱动系统中,发布者有责任包括其他服务可以使用的所有内容。如果事件没有包含它需要的所有内容,那么您就不能首先发布事件,因此您需要确保确实如此。这是事件驱动的整个问题,因为消费者希望从消息中提取所需的所有数据。

如果您仍然能够发布格式不正确的事件,那么您将拒绝该事件并确定将其记录下来。如果那个被拒绝的事件是事务的一部分,并且链接到另一个事件的发布,那么您将引发失败的处理事件(Saga模式)。

最佳做法是使用所有必需的有效载荷引发事件。如果事件的格式不正确,那么这将是一个糟糕的设计,最终将导致大规模处理变得复杂。