簡體   English   中英

SQL隊列服務代理應用程序

[英]SQL Queue Service Broker Application

我正在設計一個將從SQL隊列中讀取消息的應用程序。 這是一項要求。 我必須使用他們的隊列。 問題是如何讀取他們的隊列。 我想像MSMQ一樣使用它,但它看起來不可能。 我需要一次讀取一個FIFO順序的消息。 要一次讀一個,我必須使每個消息成為一個對話,但它們不一定按FIFO順序。 我可以使用一個永無止境的對話來維持秩序,但我相信我必須閱讀隊列中的所有內容。 不只是一條消息。 有沒有人構建一個應用程序來執行我需要它的方式? 這不可能嗎? 還有其他建議嗎?

提前致謝。

從SQL隊列中讀取消息。 這是一個要求......我想像MSMQ一樣使用它,但它看起來不太可能。 我需要一次讀取一個FIFO順序的消息。

我的建議是不要試圖在圓孔中安裝方形釘。 如果要求使用Service Broker,那么不要試圖適應您的編程模型。 教育自己一點關於Service Broker編程,並嘗試設計一些利用SSB優勢的東西。 在你前進之前閱讀這些鏈接:

來吧,我等一下......

我希望現在很清楚,有一種方法做你原來問:國家統計局提供正好一次在訂單交付的對話中 ,所以你只能通過發送上一個會話的所有消息實現FIFO。 SSB還允許您使用RECEIVE TOP(1) ... FROM ...將出列限制為僅一條消息。 結合這兩個,你得到你所要求的。

但這不是SSB應用程序的設計方式。 實際上沒有理由將出列限制為單個消息,您應該將批次出列並循環處理批處理。 保持一個交易,結果與一次一個地出列無法區分。 接下來,FIFO要求只有在會話中才有意義,只要你有多個發送者FIFO不存在,作為一個基本概念(當多個發件人同時發送消息時'首先'意味着什么?'先''命中目標隊列,在隨機網絡輪盤?)。 您可以通過消息到達的順序出現來獲得FIFO的錯覺,實際上SSB就是這樣做的。 一旦考慮並發處理,天真的“全局FIFO”概念就會崩潰。 拋棄回滾並重試為香料。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM