我有一個傳奇服務ProcessCatalog,對產品 負責目錄發佈過程。與NServicebus競爭條件和服務實施
客戶端應用程序向其發送PublishCatalog消息;每條消息包含 catalogid和項目列表。
我選擇了catalogid作爲SagaId。
ProcessCatalog服務是一個長期運行的業務流程,它安排合適的 訂購其他業務服務。
我需要ProcessCatalog記住當前目錄項目組成 驅動器發佈過程。
會發生什麼情況相同的用戶是否擊中的第一時間上UI按鈕發送 PublishCatalog(採用catalogId = 1,ITEMLIST = {A,B,C}),然後改變目錄 組合物(itemList中= {A,d ,E}),所以點擊UI按鈕上的另一次發送 另一個PublishCatalog爲相同的CatalogId?
如果我的ProcessCatalog端點配置了一個workerthread,所有的作品 罰款(我認爲)。但是,如果workthread大於1並且以併發方式處理消息,會發生什麼情況?如果第二個線程在第一個線程之前完成 執行,會發生什麼?
我問我這是一個商業設計錯誤還是一個正常的技術問題。
嗨亞當,從商業的角度來看,你是對的,我理解你的觀點。但是,我的疑問是相對於種族情況的情況。 如果workthread大於1並且2個消息在併發中處理,會發生什麼情況?如果第二個線程在第一個線程之前完成執行會發生什麼? 我應該鎖定相對於目錄ID的傳奇行? – Alberto
我不認爲你有一個併發問題,但如果你這樣做,將是一個行上的鎖,然後第一級重試會發生,它會先到先得。 –