2017-04-12 89 views
1

我有一个接受来自客户网站的HTTP请求的服务。该服务然后将HTTP请求发送到事务性电子邮件提供商,并使用向服务的初始请求中提供的信息。工作流程是这样的:处理多级网络请求的正确方法是什么?

CustomerSite EmailService TransactionEmailProvider

我能想到的两种可能处理请求,以便从TransactionalEmailProvider错误可以被报告给CustomerSite。

  1. EmailService,当它接收到来自 CustomerSite的请求立即发送异步请求 TransactionalEmailProviderEmailService立即响应 CustomerSite与成功代码,如果请求正确 形成。如果向 TransactionalEmailProvider发送请求时发生故障,则EmailService会将使用POST请求的故障 通知使用012hwebhook实现发送回EmailService
  2. EmailService向TransactionalEmailProvider发送请求,并在成功或失败地响应CustomerSite请求之前等待响应。

现在,我实现了第一个版本,因为我不想让EmailService的响应是依赖于TransactionalEmailProvider的响应。

这是一个合理的方式来处理依赖于第二层HTTP请求的HTTP请求吗?有没有哪种情况会比另一种更受欢迎?

+0

两者都是“正确的” - 他们只是有不同的权衡。 –

回答

1

这是一种合理的方式来处理依赖于HTTP请求的第二级别的HTTP请求?有没有哪种情况会比另一种更受欢迎?

这实际上取决于系统要求,它取决于您希望在某些组件出现故障或工作负载变化时如何行动。

如果您希望您的系统具有被动性或可伸缩性,则应尽可能使用异步请求。为此,你的系统应该是消息驱动的。您可以阅读有关reactive system here的更多信息。这似乎是你的第一选择。

如果你想要一个更简单的系统,然后使用同步/阻塞请求,如你的选择号。 2

相关问题