SQL Server Service Broker – 訊息佇列 Service Broker 是整合在SQL Server 2005/2008內的Message Service,允許資料庫應用程式單向(one-way)或雙向(two-way)輕鬆交換訊息。Service Broker 兩個重要的優點是:(1)非同步訊息(Asynchronous messages)(2)確保到達目的地(Guaranteed delivery) Service Broker 包含一些相關的組件,Contract、Service、Queue隊列、Message Type訊息類型、Service program or service application 服務應用程式(一般為預存程序)等等,如所示。
Service Broker 應用程式通過對話進行通訊。在實際生活中,對話是兩個人之間的溝通。一個人發送一條訊息,另外一個人接收訊息並回複。在Service Broker中,一個對話是通過contract、隊列、服務進行可靠的、非同步訊息交換。簡而言之,Service Broker 對話用來發送和接收訊息。如所示,兩個分離的資料庫分別定義了一個Service Broker服務,相互之間進行發送和接收訊息,進行雙向對話。
Orders資料庫發送一條訊息給Shipping資料庫,訊息中說一個訂單Order已經接收並確認了。Shipping資料庫則發送一條確認訊息,說訂單正在被處理,隨後當訂單實際發貨後,發送另一條訊息給Orders資料庫。當有訊息在進入隊列時,可以配置Service Broker自動啟動服務程式,或者配置程式定期檢查訊息佇列(Message Queue)。Service Broker非常靈活,足以出來不同的業務需要。 關於Service Broker的實際開發,建議你參考如下一些文章:Service Broker實現發布-訂閱(Publish-Subscribe)架構(1) (中文)http://forum.entlib.com/Default.aspx?g=posts&t=70 Service Broker實現發布-訂閱(Publish-Subscribe)架構(2) (中文)http://forum.entlib.com/Default.aspx?g=posts&t=71 Service Broker實現發布-訂閱(Publish-Subscribe)架構(3) (中文)http://forum.entlib.com/Default.aspx?g=posts&t=72 Introducing Distributed Messaging using Service Broker in SQL Server 2005 (英文)http://www.codeproject.com/KB/database/IntroServiceBroker.aspx