科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道如何在SQL Server 2005中使用Service Broker内部激活

如何在SQL Server 2005中使用Service Broker内部激活

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在本文中,我将带领你建立一个小型的Service Broker应用程序,它使用内部激活(Internal Activation)来处理所提交的消息。

作者:builder.com.cn 2007年3月2日

关键字: Tim Chapman SQLServer SQL Server 2005 SQL Server

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共4页)

在前面的文章中,我说明了基于消息的系统背后的理论,并介绍了Service Broker组件——在数据库引擎中建立异步消息应用程序的SQL Server 2005新特性。在本文中,我将带领你建立一个小型的Service Broker应用程序,它使用内部激活(Internal Activation)来处理所提交的消息。

内部激活

在举例之前,我想提及一下Service Broker应用程序中的内部激活功能。在许多情况下,消息一到达队列就对它们进行处理,这种做法是合适的。在Service Broker应用程序中,你可以指定一个存储过程,只要有消息到达一个队列,就立即执行它。在某种程度上,它就像队列中的异步触发器。

使用这种技巧的优点在于,如果你的队列由于收到大量消息而陷入困境,你可以对队列进行设置,使它启动更多存储过程实例。我认为这是Service Broker应用程序的一项非常重要的功能,因此我将在下面的例子中分析内部激活的运行机制。

实例

这个例子说明如何调用一个提交Service Broker消息的存储过程,它反过来调用一个存储过程来处理第一个存储过程提交的消息。

USE master

GO

IF EXISTS(SELECT * FROM sys.databases where name = 'SB')

DROP DATABASE SB

GO

CREATE DATABASE SB

GO

ALTER DATABASE SB

SET ENABLE_BROKER

GO

上面的脚本用来建立这个例子使用的数据库环境。在我能够应用其功能之前,我首先必须在数据库中启动Service Broker;ENABLE_BROKER语句帮助我启动它。

下面的脚本建立一个Sales表,我在整个实例中都要用到它。

USE SB;

GO

CREATE TABLE Sales

(

SaleID INT IDENTITY(1,1),

SaleDate SMALLDATETIME,

SaleAmount MONEY,

ItemsSold INT

);

GO

为建立所需的Service Broker组件,我创建了MESSAGE TYPE和CONTRACT对象。MESSAGE TYPE对象确认消息的内容,它对会话获得的消息实行严格控制。CONTRACT对象指定所用到的MESSAGE TYPE对象,以及会话中消息的传送方向。

CREATE MESSAGE TYPE [RecordSale] VALIDATION = NONE;

CREATE CONTRACT [SalesContract]

(

[RecordSale] SENT BY INITIATOR

);

GO

这个应用程序将消息从一个Service Broker队列传递给另一个队列,因此我需要建立实现这些功能的脚本。首先,我建立SalesQueue,它将接收消息,并启动一个过程来处理它们。(SalesService处理进入的消息并把它们传递给SalesQueue。)

CREATE QUEUE [SalesQueue];

CREATE SERVICE [SalesService] ON QUEUE [SalesQueue]([SalesContract]);

GO

点击查看更多数据库技术文章
http://soft.zdnet.com.cn/software_zone/db.shtml

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章