我有一个接受来自客户站点的HTTP请求的服务。然后,该服务向事务性电子邮件提供程序发送 HTTP 请求,其中包含对服务的初始请求中提供的信息。工作流如下所示:
客户站点 ⟷电子邮件服务⟷交易电子邮件提供商
我可以想到两种处理请求的可能性,以便将来自事务电子邮件提供程序的错误报告给客户站点。
EmailService
立即向TransactionalEmailProvider
当它收到来自CustomerSite
.EmailService
立即响应 如果请求正确,则使用成功代码CustomerSite
形成。如果在向TransactionalEmailProvider
,EmailService
发送失败 使用 POST 请求返回EmailService
的通知使用 网络钩子实现。
电子邮件- 服务向事务性电子邮件提供商发送请求,并在响应客户站点请求之前等待响应,无论成功还是失败。
现在我正在实现第一个版本,因为我不希望EmailService
的响应能力取决于TransactionalEmailProvider
的响应能力。
这是处理依赖于第二级 HTTP 请求的 HTTP 请求的合理方法吗?是否存在一种优于另一种的情况?
这是处理依赖于第二级 HTTP 请求的 HTTP 请求的合理方法吗?是否存在一种优于另一种的情况?
这实际上取决于系统要求,这取决于您希望在某些组件发生故障或工作负载变化时的行为方式。
如果您希望系统是被动的或可扩展的,则应尽可能使用异步请求。为此,您的系统应该是消息驱动的。您可以在此处阅读有关反应式系统的更多信息。这似乎是您的第一选择。
如果你想要一个更简单的系统,那么使用同步/阻塞请求,就像你的选项2一样