SSB(SQLservice Service Broker) 入门实例介建站知识
导读:1建站知识前两天用了 MSsql里的 SSB委托机制,做了一个消息分发的小功能,在这里简单跟大家分享一下方法跟实例建设网站网站建设。
step 1:perpar database & data
复制代码 代码如下:
use mastergoCreate database Inventorygouse InventorygoCreate table inventory( TitleId nvarchar(6) not null, Quantity int not null, primary key (TitleId,Quantity));go
insert inventory values ('pc1001',100);insert inventory values ('pc1002',200);insert inventory values ('pc1003',300);insert inventory values ('pc1004',400);
step 2: 创建整个SSB的基础框架.首先创建信息类型
复制代码 代码如下:
Create Message Type [//mark/v10/types/inventory]Create Message Type [//mark/v10/types/inventoryresponse]
创建合约复制代码 代码如下:
Create contracts [//mark/v10/contracts/inventorycontract]( [//mark/v10/types/inventory] send by initiator, [//mark/v10/types/inventoryresponse] send by target );
创建队列与服务复制代码 代码如下:
create queue [inventory client queue];create service [//mark/v10/services/inventory client] on queue [inventory client queue] go --create inventory service create queue [inventory queue]; create service [//mark/v10/services/inventory] 网站建设公司 on queue [inventory queue] ( [//mark/v10/contracts/inventorycontract] );
step 3:发送消息到消息队列中复制代码 代码如下:
use Inventorygo--send messagebegin transaction declare @dialog_id uniqueidentifier begin dialog conversation @dialog_id from service [//mark/v10/services/inventory client] to service '//mark/v10/services/inventory' on contract [//mark/v10/contracts/inventorycontract] with encryption = off; send on conversation @dialog_id message type [//mark/v10/types/inventory] ( '<InventoryUpdate> <TitleId>pc1001</TitleId> <Quantity>102</Quantity> </InventoryUpdate>' ); commit transaction;
发送成功后,可以查询 inventory_queue复制代码 代码如下:
select conversation_handle, cast(message_body as xml) as conversation_body from [Inventory queue]
这里只是查询了两列。 其中conversation_body 就是 我们发出的信息了。setp 4: 从 inventory queue 中获取信息并更新数据
复制代码 代码如下:
use inventorygobegin transaction declare @dialog_id uniqueidentifier declare @message_body xml declare @amount int; declare @title nvarchar(128); receive @dialog_id = conversation_handle, @message_body = message_body from [dbo].[Inventory queue] print 'handle is' + cast(@dialog_id as nvarchar(90)) print 'message body is' + cast(@message_body as nvarchar(max) ) if(@dialog_id is not null) begin set @amount = @message_body.value('(/InventoryUpdate/Quantity)[1]','int'); set @title = @message_body.value('(/InventoryUpdate/TitleId)[1]','nvarchar(100)'); print 'a:'+cast(@amount as nvarchar(100)) print 'b:'+@title; Update inventory set Quantity = @amount where TitleId = @title; end end conversation @dialog_id; commit transaction;
声明: 本文由我的SEOUC技术文章主页发布于:2023-05-23 ,文章SSB(SQLservice Service Broker) 入门实例介建站知识主要讲述实例,入门,SQL网站建设源码以及服务器配置搭建相关技术文章。转载请保留链接: https://www.seouc.com/article/web_6034.html