[英]Message Queueing Scenario - Queueing and remote web service
(請參閱下面的幻燈片鏈接)我正在嘗試創建與遠程Web服務交互的,可審核的請求和響應服務。 我在為我的方法選擇正確的實現時遇到一些麻煩。 基本上,我需要執行該工作的方式如下。
請求者應用程序(A)將生成請求XML,並將其添加到請求“隊列”中。 然后,請求處理器將從“隊列”中獲取未處理的記錄,並將其發布到具有唯一ID的遠程Web服務(X),如果請求未成功,則請求將被保留/(requestComplete標志= 0) “隊列”將在以后的時間重試。
如果請求成功它被保持/(requestComplete標志= 1),並且不重試
稍后,接收者Web服務(B)從請求中調用的“ X”服務接收響應。
然后,“ B”搜索請求記錄以查找原始請求,並將“ A”請求和“ X”響應相關聯(使用唯一ID進行匹配)。
響應會執行一些其他處理,並且來自“隊列”的記錄將更新為已完成。
這樣,從請求到響應都有完整的審核跟蹤。 通過查看“隊列”記錄,可以看到原始請求是何時發出的,如果請求有錯誤。 同樣,通過響應,我可以看到何時收到響應。
我曾考慮過兩種實現此方法的方法。
只是一些注意事項:
如果有人對采用哪種方法有任何建議或指導,對上述方案的最佳做法有任何意見或知識,那將是非常有益的。
我建議您查看帶有sagas的服務總線(我的首選是Rhino Service Bus ,但NServiceBus也有很多吸引力,並且還有Mass Transit )
基本上,服務總線將處理排隊(又稱為發送)和出隊(又稱為接收和處理)的消息。 然后,傳奇將幫助維護對話的狀態(對話包含多個消息)。
Rhino Service Bus中的延遲消息和NServiceBus中的超時(我沒有使用Mass Transit的經驗)可以很好地處理稍后重試的問題。
我會將結果日志存儲在數據庫中,以使其更易於查詢和報告。 我還寧願將服務總線與MSMQ(或任何其他隊列)一起使用,而不是將數據庫表用作“隊列”-前者是專門為您的情況設計的,而后者是一種更通用的產品,可以處理許多不同的情況,並且因此,它不會像隊列實現(例如MSMQ)那樣高效(盡管它可以做到-但擴展變得更加困難)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.