場景:TransactedReceiveScope - 交易提交何時完成?
我們有一個wcf工作流程,其客戶端不使用事務流。 工作流程包含幾個連續的TransactedReceiveScopes(使用基於內容的關聯)。 TransactedReceiveScopes包含自定義數據庫操作。
觀察:
當我們對運行在第一次調用SQL事件探查器中,我們看到所有的自定義調用數據庫,並且在配置文件跟蹤的SaveInstance電話。
我們已經注意到,即使SendReply在TransactedReceiveScope的最後,有時候sendreply在事務提交之前發生了10秒。
我們嘗試將TimeToPersist和TimeToUnload更改爲零,但這沒有效果。 (跟蹤顯示SaveInstance立即發生,但是提交似乎被延遲)。
問題:
是我們的意見,是否正確?
交易在什麼時候進行?這是否像垃圾回收 - 即它在一段時間後不忙時提交?
是否有任何方法來控制提交延遲,或者是唯一的方法來做到這一點使用來自客戶端的事務流(然後它應該都提交時,客戶端提交,包括堅持)。
謝謝莫里斯。我仍然覺得奇怪的是,你看到了profiler中的所有SQL調用,包括saveinstance,然後它返回給客戶端,但是在它提交之前還有一段時間的延遲。我需要閱讀調度程序,我沒有看到太多的提及。唯一的解決方案似乎是使用客戶端的TransactionFlow來控制事務的提交,即使客戶端沒有自己的工作來添加到事務中。 – jimasp
閱讀此文的任何人的另一點是,如果您的客戶端沒有將事務處理流入工作流程,那麼在大多數情況下,您只需要一個標準的receive/sendreply處理中間的transactioncope。 – jimasp