有人可以解釋服務代理中的對話組嗎?Sql Server Service Broker對話組
目前,我正在使用服務代理將消息從一臺SQL服務器發送到另一臺服務器。在發送服務器上,我試圖關聯消息,以便在接收端對它們進行串行處理。根據文檔,會話組似乎非常適合這種情況,但在接收服務器上,消息被分配到與我在發送消息時指定的會話組不同的會話組。
我已經在網絡上搜索,發現這種行爲似乎意(http://social.msdn.microsoft.com/forums/en-US/sqlservicebroker/thread/baf48074-6804-43ab-844a-cb28a6dce02b/),但後來我感到困惑的語法從(http://msdn.microsoft.com/en-us/library/ms178624.aspx)
WAITFOR(
GET CONVERSATION GROUP @conversation_group_id FROM [dbo].[ReceiveQueue]
)
如果談話的用處組不會碰到來自發送方的消息,並且使用同一個對話組標識發送的消息在接收方沒有相同的對話組標識,那麼上面的代碼有什麼意義?
謝謝。這就是我可以在網上找到的最佳解釋。也許這只是我,但關於此功能的Microsoft MSDN文檔似乎非常模糊。有關如何序列化接收隊列上的消息處理的任何建議?我發送的消息可能會更新接收端的單個記錄。這些消息來自不同的來源,因此不能成爲同一對話的一部分。我需要確保在接收端相互關聯的消息按順序和順序處理。 – 2009-08-21 23:08:38
目標可以使用MOVE CONVERSATION將會話分組。然後,它可以將任何「新」對話轉移到適當的組中。另一種方法是反轉對話啓動:'後端'啓動對話(並因此控制他們的分組),並且'前端'在對話的*目標*端點上發送。如果後端無法知道最終名稱/位置,則可以通過前端發送一條意思爲'請在此地址訂閱我'的消息來觸發'啓動'。適當的解決方案取決於您的方案的具體情況。傳一個電子郵件給我。 – 2009-08-21 23:50:18
是的,移動對話方法就是我們目前正在研究的方法。擔心的是,由於移動會話鎖定了目標會話組,並通過對話組獲取消息來鎖定關聯的會話組,所以我們可能會陷入死鎖狀態。我們正在嘗試解決這個問題。感謝您的洞察力。 – 2009-08-24 16:06:46