2017-04-12 133 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

相關問題