2010-04-11 74 views
3

我有處理消息排序的體系結構問題。對於這個問題,運輸是無關緊要的,所以我不打算指定一個。分佈式消息訂購

假設我們有三個系統,一個網站,一個CRM和一個ERP。例如,在數據所有權方面,ERP將成爲「主」系統。 網站和CRM都可以向ERP系統發送新的客戶消息。然後ERP系統添加一個客戶,併發布客戶 與新分配的帳號,以便網站和客戶關係管理可以 將帳號添加到他們的本地客戶記錄。這是一個非常簡單的過程。

接下來我們繼續下訂單。 CRM或網站向 訂購ERP系統時需要帳號。 但是,即使客戶缺少賬號,CRM也將允許用戶下單。 (對於此示例,假設我們不能 修改CRM行爲)這會創建一個可能性,即用戶可能創建新客戶並在CRM中更新帳號前獲得訂單 。

處理這種情況的最佳方法是什麼?最好發送 訂單消息的sans帳號並讓它進入錯誤隊列? 讓客戶關係管理終端持有該消息並等待 直到在CRM中更新帳號爲止會更好嗎?也許 完全不同,我沒有想到?

在此先感謝您的幫助。

+0

如果帳號不是您將這三個系統綁定在一起的唯一鍵,那麼是什麼?當ERP系統創建賬號時,如何知道CRM中需要更新的記錄?如果有人在設置帳號之前更正了CRM系統中的名稱,那會失敗嗎? – 2010-04-11 04:26:17

回答

1

我想CRM對於新創建的客戶有其唯一的客戶ID。此CRM客戶ID是ERP的外部密鑰,應該存在於ERP-> CRM更新中,否則CRM無法關聯和更新其自己的用戶記錄。如果這種假設是正確的,那麼可以在CRM和ERP之間放置一箇中間人,使得訂單中沒有帳號的隊列等待,直到它從ERP獲取帳號更新。中間商將使用CRM客戶ID將等待訂單請求與賬戶號碼更新相關聯,然後使用賬戶ID豐富訂單並將訂單轉發給ERP。

如果訂單在中間人的隊列中停留時間過長,則應將其移至錯誤/升級隊列。

中間人可能會在CRM或ERP中或某個集成平臺中實施。

+0

這兩個答案都來自APC提供了類似的解決方案,但是我認爲我喜歡外部中間人服務的想法,該服務處理無序消息與內置於ERP系統中的掛起隊列。 – sbanwart 2010-04-11 20:05:13

0

您是否可以將「創建新客戶&訂單」操作封裝爲一個簡單的解構並在ERP系統中按順序播放的消息?因此,您需要「創建新客戶」消息,「下訂單」消息和新建的「創建客戶訂單」消息。

+0

我想避免創建一堆額外的消息類型,如果我可以幫助它。不過,如果沒有更好的方法處理這個問題,我願意接受這個選擇。 – sbanwart 2010-04-11 03:59:59

1

CRM系統應該有自己的帳號,這是內部使用的。這爲您提供了在ERP系統創建主帳戶之前處理訂單的機制。 CRM應用程序將ERP賬戶號碼作爲其客戶記錄中的唯一密鑰;基本上CRM帳號是一個綜合密鑰,ERP帳號是一個商業密鑰。

在此設計中,CRM向ERP發送新客戶消息和新訂單消息。這兩條消息都會發送CRM客戶號碼和一個空白的ERP帳號。假設ERP系統只有一個消息隊列,通常應用物理定律,因此ERP系統應該首先處理新客戶消息;它會向客戶關係管理系統發送一個新賬戶信息,將CRM客戶號碼綁定到新的ERP賬戶號碼。 ERP系統需要一個數據存儲,將其客戶編號與CRM賬戶編號相關聯,以便它可以處理在發佈ERP賬戶編號之前發送的任何新訂單消息。

如果您遇到新訂單消息在新客戶消息處理之前到達要處理的情況,您需要將其路由到未決隊列。當ERP系統處理新客戶消息時,則需要檢查待處理隊列。事實上,隊列可能是錯誤的,因爲ERP系統將會顛覆所有新訂單消息尋找與CRM客戶編號相匹配的消息。