Service Broker实现发布-订阅(Publish-Subscribe)框架(3)
生活随笔
收集整理的這篇文章主要介紹了
Service Broker实现发布-订阅(Publish-Subscribe)框架(3)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Service Broker實現(xiàn)發(fā)布-訂閱(Publish-Subscribe)框架(3)
這一主題前面相關(guān)的文章如下:
Service Broker實現(xiàn)發(fā)布-訂閱(Publish-Subscribe)框架(1)
Service Broker實現(xiàn)發(fā)布-訂閱(Publish-Subscribe)框架(2)
發(fā)布信息Publishing Information 這一節(jié)演示訂閱者通過訂閱從PublisherService服務接收信息,已經(jīng)AuthorService如何發(fā)送新的article消息到PublisherService服務進行分發(fā)。在訂閱者可以從PublisherService接收新的article消息之前,它必須請求一個訂閱。可以通過發(fā)送一個 [http://ssb.csharp.at/SSB_Book/c10/SubscribeMessage] 消息來實現(xiàn),代碼如下: 訂閱方請求訂閱腳本: DECLARE @ch UNIQUEIDENTIFIER; BEGIN DIALOG CONVERSATION @ch FROM SERVICE [SubscriberService1] TO SERVICE 'PublisherService' ON CONTRACT [http://ssb.csharp.at/SSB_Book/c10/SubscribeContract] WITH ENCRYPTION = OFF; SEND ON CONVERSATION @ch MESSAGE TYPE [http://ssb.csharp.at/SSB_Book/c10/SubscribeMessage] ( N'<?xml version="1.0"?> <Request xmlns="http://ssb.csharp.at/SSB_Book/c10/PublishSubscribe"> <Subject>Subject1</Subject> </Request>' ); GO 在上述腳本中,你必須在發(fā)送的消息中指定消息主題,隨后會根據(jù)主題從PublisherService 中獲取發(fā)布數(shù)據(jù)。在訂閱者一設置好訂閱,AuthorService就可以發(fā)送article消息給PublisherService進行分發(fā)。示例代碼如下: [AuthorService] 發(fā)送PublishMessage消息: DECLARE @ch UNIQUEIDENTIFIER; BEGIN DIALOG CONVERSATION @ch FROM SERVICE [AuthorService] TO SERVICE 'PublisherService' ON CONTRACT [http://ssb.csharp.at/SSB_Book/c10/PublishContract] WITH ENCRYPTION = OFF; SEND ON CONVERSATION @ch MESSAGE TYPE [http://ssb.csharp.at/SSB_Book/c10/PublishMessage] ( N'<?xml version="1.0"?> <Publish xmlns="http://ssb.csharp.at/SSB_Book/c10/PublishSubscribe"> <Subject>Subject1</Subject> </Publish>' ); AuthorService必須指定隨后的article消息屬于哪一主題,它通過發(fā)送[http://ssb.csharp.at/SSB_Book/c10/PublishMessage] 消息類型,通知PublisherService 記錄相應的發(fā)布記錄。最后,AuthorService 發(fā)送屬于前面指定主題的、不同的article消息。 發(fā)送特定主題的article消息: SEND ON CONVERSATION @ch MESSAGE TYPE [http://ssb.csharp.at/SSB_Book/c10/ArticleMessage] ( N'This is an article on Subject1' ); SEND ON CONVERSATION @ch MESSAGE TYPE [http://ssb.csharp.at/SSB_Book/c10/ArticleMessage] ( N'And this is another article on Subject1' ); GO 在AuthorService 一發(fā)送article消息到PublisherService,這些消息將通過sp_PublisherService存儲過程自動轉(zhuǎn)發(fā)給訂閱者。現(xiàn)在,你可以查詢訂閱者服務對應的隊列,⑾址⑺偷腶rticle消息成功轉(zhuǎn)發(fā)過來了。 備注:因為Service Broker內(nèi)在的異步處理特性,在你查看SubscriberQueue1和SubscriberQueue2隊列之前,你需要等待幾秒鐘,直到這些消息已經(jīng)處理完成。 EntLib.com譯者注:本文翻譯Apress出版《Pro SQL Server 2005 Service Broker》的其中一個章節(jié)。現(xiàn)已翻譯完成,歡迎交流、分享。謝謝!
這一主題前面相關(guān)的文章如下:
Service Broker實現(xiàn)發(fā)布-訂閱(Publish-Subscribe)框架(1)
Service Broker實現(xiàn)發(fā)布-訂閱(Publish-Subscribe)框架(2)
發(fā)布信息Publishing Information 這一節(jié)演示訂閱者通過訂閱從PublisherService服務接收信息,已經(jīng)AuthorService如何發(fā)送新的article消息到PublisherService服務進行分發(fā)。在訂閱者可以從PublisherService接收新的article消息之前,它必須請求一個訂閱。可以通過發(fā)送一個 [http://ssb.csharp.at/SSB_Book/c10/SubscribeMessage] 消息來實現(xiàn),代碼如下: 訂閱方請求訂閱腳本: DECLARE @ch UNIQUEIDENTIFIER; BEGIN DIALOG CONVERSATION @ch FROM SERVICE [SubscriberService1] TO SERVICE 'PublisherService' ON CONTRACT [http://ssb.csharp.at/SSB_Book/c10/SubscribeContract] WITH ENCRYPTION = OFF; SEND ON CONVERSATION @ch MESSAGE TYPE [http://ssb.csharp.at/SSB_Book/c10/SubscribeMessage] ( N'<?xml version="1.0"?> <Request xmlns="http://ssb.csharp.at/SSB_Book/c10/PublishSubscribe"> <Subject>Subject1</Subject> </Request>' ); GO 在上述腳本中,你必須在發(fā)送的消息中指定消息主題,隨后會根據(jù)主題從PublisherService 中獲取發(fā)布數(shù)據(jù)。在訂閱者一設置好訂閱,AuthorService就可以發(fā)送article消息給PublisherService進行分發(fā)。示例代碼如下: [AuthorService] 發(fā)送PublishMessage消息: DECLARE @ch UNIQUEIDENTIFIER; BEGIN DIALOG CONVERSATION @ch FROM SERVICE [AuthorService] TO SERVICE 'PublisherService' ON CONTRACT [http://ssb.csharp.at/SSB_Book/c10/PublishContract] WITH ENCRYPTION = OFF; SEND ON CONVERSATION @ch MESSAGE TYPE [http://ssb.csharp.at/SSB_Book/c10/PublishMessage] ( N'<?xml version="1.0"?> <Publish xmlns="http://ssb.csharp.at/SSB_Book/c10/PublishSubscribe"> <Subject>Subject1</Subject> </Publish>' ); AuthorService必須指定隨后的article消息屬于哪一主題,它通過發(fā)送[http://ssb.csharp.at/SSB_Book/c10/PublishMessage] 消息類型,通知PublisherService 記錄相應的發(fā)布記錄。最后,AuthorService 發(fā)送屬于前面指定主題的、不同的article消息。 發(fā)送特定主題的article消息: SEND ON CONVERSATION @ch MESSAGE TYPE [http://ssb.csharp.at/SSB_Book/c10/ArticleMessage] ( N'This is an article on Subject1' ); SEND ON CONVERSATION @ch MESSAGE TYPE [http://ssb.csharp.at/SSB_Book/c10/ArticleMessage] ( N'And this is another article on Subject1' ); GO 在AuthorService 一發(fā)送article消息到PublisherService,這些消息將通過sp_PublisherService存儲過程自動轉(zhuǎn)發(fā)給訂閱者。現(xiàn)在,你可以查詢訂閱者服務對應的隊列,⑾址⑺偷腶rticle消息成功轉(zhuǎn)發(fā)過來了。 備注:因為Service Broker內(nèi)在的異步處理特性,在你查看SubscriberQueue1和SubscriberQueue2隊列之前,你需要等待幾秒鐘,直到這些消息已經(jīng)處理完成。 EntLib.com譯者注:本文翻譯Apress出版《Pro SQL Server 2005 Service Broker》的其中一個章節(jié)。現(xiàn)已翻譯完成,歡迎交流、分享。謝謝!
總結(jié)
以上是生活随笔為你收集整理的Service Broker实现发布-订阅(Publish-Subscribe)框架(3)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 杂果沙拉为什么要用沙拉酱?
- 下一篇: firebird乱码问题