Serivce Broker 簡單實用

2021-09-08 21:36:19 字數 3567 閱讀 6023

--

建立要使用的資料庫

create

database helloworlddb

gouse helloworlddb

go--

建立要使用的兩種訊息型別。我們要使用的訊息將是

--字串而不是 xml - 因此無需進行驗證

create message type [

helloworldrequest

] validation = none

create message type [

helloworldresponse

] validation = none

--建立乙個限制此對話方塊中訊息型別

--的規範。請求由對話方塊的初始化程式發出

--響應訊息由對話方塊目標傳送。

create contract [

helloworldcontract](

[helloworldrequest

] sent by initiator,

[helloworldresponse

] sent by target)--

建立對話方塊在其間通訊的兩個佇列。a

--對話方塊請求兩個佇列。

create queue [

helloworldtargetqueue

]create queue [

helloworldinitiatorqueue]--

建立命名對話方塊端點的服務。服務會將

--會話端點連線到佇列。

create service [

helloworldrequestservice

]on queue [

helloworldtargetqueue](

[helloworldcontract])

create service [

helloworldresponseservice

]on queue [

helloworldinitiatorqueue]go

use helloworlddb

goset nocount on

declare

@conversationhandle

uniqueidentifier

begin

transaction

--開始 hello world 服務的對話

begin dialog @conversationhandle

from service [

helloworldresponseservice

]to service '

helloworldrequestservice

'on contract [

helloworldcontract

]with encryption =

off, lifetime =

600;

--傳送訊息

send on conversation @conversationhandle

message type [

helloworldrequest

] (n'

hello world

')commit

use helloworlddb

go--

檢查目標佇列以確認訊息已送達

select

*from

[helloworldtargetqueue]go

--將訊息主體轉換為字串,以便我們檢視其中包含的內容

select

cast(message_body as

nvarchar(max)) from

[helloworldtargetqueue]go

--使用 receive 命令可從佇列接收訊息

--宣告變數以儲存接收到的資料

set nocount on

declare

@conversationhandle

uniqueidentifier

declare

@message_body

nvarchar(max)

declare

@message_type_name sysname;

--service broker 命令總是位於事務中

begin

transaction;

--receive 命令的格式類似於乙個選擇列表。首先列出

--要獲取的列,然後指定要從中獲取訊息

--的佇列

receive top(1) --

只接收一條訊息,因此我們可以直接儲存到變數中。

@message_type_name

=message_type_name,

--接收的訊息型別

@conversationhandle

=conversation_handle,

--對話的識別符號

--我們通過下列語句接收該訊息

@message_body

=message_body

--作為

--varbinary(max) blob 的訊息內容

from

[helloworldtargetqueue

]print

@message_body

--如果這是一條 hello world 訊息,則用相應的問候語回答

if@message_type_name

= n'

helloworldrequest

'begin

send on conversation @conversationhandle

--使用下列訊息接收語句的相同會話

message type [

helloworldresponse

](n'

hello from '+

@@servername )

--這是我們希望從初始化程式接收的唯一訊息,因此

--現在可以安全地結束對話。

end conversation @conversationhandle

end--

提交事務

--如果此時我們回滾,所有內容將退回到

--我們開始時的狀態 – 訊息會返回到佇列,並且沒有傳送響應

commit

go--

確認我們從佇列中刪除了訊息

select

cast(message_body as

nvarchar(max)) from

[helloworldtargetqueue]go

use helloworlddb

goselect

cast(message_body as

nvarchar(max)) from

[helloworldinitiatorqueue]go

receive

cast(message_body as

nvarchar(max))

from

[helloworldinitiatorqueue

]

Ant Design簡單簡單簡單執行

config 配置檔案 config.js 路由定義檔案 路徑檔案 defaultsettings.js 主題顏色以及標題配置檔案 plugin.config.js 沒怎麼用過的配置檔案 dist 構建專案之後產生的檔案 mock mock資料檔案 用於本地開發使用 node modules 資源檔...

簡單題目不簡單回答

1 const變數與巨集的區別 2.程式的變數怎麼儲存的?3.巨集和列舉有什麼區別,定義陣列時使用列舉和使用巨集的區別 4.const變數是否可以做陣列下標 5.static的用法,static修飾類的方法時,是什麼意思 6.設計模式熟不熟?寫乙個最簡單的單例模式 7.如何用c實現物件導向 8.程式...

簡單的設計不簡單

最近看了 簡約至上 這本書,這本文章總結一下。推薦給對互動設計感興趣的童鞋。話說簡單 首先人們喜歡簡單 值得信賴 適應性強的產品。所以我們才會費盡心力去設計簡單的產品。人們喜歡簡單的產品原因有 1 產品的功能越多,就越難發現真正對使用者有價值的新功能。2 因為增加的複雜性導致他們很難找到自己真正需要...