Service Broker学习(一)

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

0.参考文献:

SQL Server Service Broker MSDN文档总览

SQL Server 2005 Service Broker 初探

Servic Broker对话会话

1.Service Broker 编程

Service Broker 功能通过 SQL Server 中的新对象启用,这些新对象可以由一组 T-SQL 扩展来创建和操作。为了数据库程序员的方便,使用了他们熟悉的用于配置其他数据库对象的 CREATE、ALTER 和 DROP DDL 语句来配置 Service Broker 应用程序。用于创建 Service Broker 对话以及在对话中发送和接收消息的命令是 Transact SQL 语言的 DML 扩展。接收命令的语法与选择命令相似,它返回包含消息的行集,就像选择命令返回包含行的行集一样。熟悉 Transact SQL 编程的开发人员会发现学习 Service Broker 编程非常容易。用于为 Service Broker 编程的客户端 API 与用于为所有数据库编程的 API 相同,例如 OLEDB、ODBC、ADO、ADO.NET 等等。下面是 Service Broker 使用的对象。

1.1.队列(QUEUE)

Service Broker 使用队列在消息发送程序和消息接收程序之间提供松散耦合。发送程序可以使用 SEND 命令将消息放到队列中,然后应用程序继续操作(不用等待接受程序发送确认回复)并依靠 Service Broker 来确保消息到达其目标位置。

队列允许较大的计划灵活性。例如,发送程序可以发送多条消息以供多个接收程序并行处理。接收程序可能在消息发送很长时间后才处理消息,但由于传入消息进行了排队,因此接收程序可以按其自己的速率处理消息,而且发送程序无须等待接收程序完成处理便可继续操作

1.2.对话(DIALOG)

Service Broker 还实现了对话,对话是两个端点之间的双向消息流。对话中的所有消息都进行了排序,而且对话消息总是按照发送的顺序传送。该顺序在事务、输入线程、输出线程以及系统崩溃和重新启动过程中都保持不变。

对话是一种会话类型。Service Broker 会话是持久可靠的通信通道。在以后的 SQL Server 版本中,Service Broker 将包括一对多的单向会话,也称为可靠的“发布-订阅”。在 SQL Server 2005 中,对话是唯一的会话类型,因此这两个术语同义。

每条消息都包括唯一标识与它相关的对话的会话句柄。例如,某个订单输入应用程序可能同时使用发货应用程序、库存应用程序和帐单应用程序打开了对话。因为每个应用程序中的消息都具有唯一的会话句柄,所以可以轻松地确定发送每条消息的应用程序。

下面的关系图显示对话的消息流:

1.3.消息类型(MESSAGE TYPE)

当前,所有 Service Broker 消息都与特定的消息类型相关联。消息类型是与消息一起传送的标签,因此接收消息的应用程序可以确定所接收消息的类型。此外,如果消息包含 XML 文档,则消息类型可以与 XML 架构集合相关联。如果为某个消息类型指定了架构集合,则所接收的该类型消息将在收到时根据架构集合进行验证,而没有通过架构验证的消息将会被拒绝。

1.4.规范(CONTRACT)

Service Broker 规范是一个消息类型集合。一个对话总是与一个规范相关联,而规范定义哪些消息类型可以通过对话发送。

1.5.服务(SERVICE)

Service Broker 服务将一个或多个规范与一个队列相关联。规范定义可以将哪些消息类型发送到队列。服务名称用于建立对话的端点。服务名称用作实际队列的别名,因此您可以编写引用服务名称的 Service Broker 程序,然后在部署应用程序时将它与实际队列相关联。

2.Service Broker“Hello World”

大多数编程语言书籍都以“Hello World”示例开始,因此我们也在 Service Broker 中使用 Hello World 作为示例。为简化示例,我使用可以从 SQL Server Management Studio 查询窗口运行的 T-SQL 进行编写。大多数 Service Broker 应用程序将作为普通的数据库应用程序,这些应用程序由通过 ADO 或 ADO.NET 与数据库进行通信的可执行程序和使用 T-SQL 或 .NET 语言编写的 SQL Server 存储过程构成。

要发送和接收消息,必须首先创建向 Service Broker 描述应用程序的消息传送部分的元数据对象。在 SQL Server 2005 中,使用新添加的 DDL 语句来创建、修改和删除 Service Broker 元数据。

代码示例

View Code

执行上述代码以后,我们可以查看SSMS中HelloWorldDB的Servic Broker属性,如下图所示,主要列出了我们创建的队列、服务等信息:

 


本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2012/06/29/2570389.html,如需转载请自行联系原作者

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
6月前
【已解决】ZooKeeper配置中出现Error contacting service. It is probably not running
【已解决】ZooKeeper配置中出现Error contacting service. It is probably not running
264 1
|
11月前
|
Kubernetes 监控 Cloud Native
k8s 自身原理之 Service
k8s 自身原理之 Service
|
11月前
|
Kubernetes 网络协议 Cloud Native
Service 基础
Service 基础
|
Java Linux 数据安全/隐私保护
成功解决ZooKeeper配置中出现Error contacting service. It is probably not running
成功解决ZooKeeper配置中出现Error contacting service. It is probably not running
|
Kubernetes 负载均衡 安全
K8S | Service服务发现
在K8S集群中是通过Pod组件来部署应用服务,Deployment组件实现Pod编排管理,Service组件实现应用的访问;
264 0
|
API 开发工具 Android开发
Service基础
Service基础
88 0
Service基础
|
Kubernetes 前端开发 应用服务中间件
K8S 集群核心概念 Service_Service 介绍 | 学习笔记
快速学习 K8S 集群核心概念 Service_Service 介绍
126 0
K8S 集群核心概念 Service_Service 介绍 | 学习笔记
|
Kubernetes 网络协议 开发者
K8S 集群核心概念 Service 删除 Service 及学习总结 | 学习笔记
快速学习 K8S 集群核心概念 Service 删除 Service 及学习总结
1691 0
K8S 集群核心概念 Service 删除 Service 及学习总结 | 学习笔记
|
Kubernetes 网络协议 应用服务中间件
K8S 集群核心概念 Service 通过命令行创建 Service | 学习笔记
快速学习 K8S 集群核心概念 Service 通过命令行创建 Service
423 0
K8S 集群核心概念 Service 通过命令行创建 Service  | 学习笔记
|
XML 运维 Dubbo
实现 Service1 | 学习笔记
快速学习实现 Service1.
161 0
实现 Service1 | 学习笔记