DAT340 实现异步消息队列 ---SQL Server 2005 Service Broker.

Slides:



Advertisements
Similar presentations
个人所得税代扣代缴系统软件 升级操作说明及常见问题解答 大连市地方税务局. 内 容 升级操作前注意事项 1 1 个税代扣代缴系统升级操作流程 2 2 升级操作常见问题解答 3 3 答疑时间 4 4.
Advertisements

一、统计范围 注册地在湖里区的具有房地产开发资质的 房地产开发企业 无论目前是否有开发项目 无论开发的项目是在湖里区还是在其他区 没有开发项目的企业需要报送年报和月报 中的资金表(空表)。 新成立的项目公司,要先入库,再报报表。
第十二章 常微分方程 返回. 一、主要内容 基本概念 一阶方程 类 型 1. 直接积分法 2. 可分离变量 3. 齐次方程 4. 可化为齐次 方程 5. 全微分方程 6. 线性方程 类 型 1. 直接积分法 2. 可分离变量 3. 齐次方程 4. 可化为齐次 方程 5. 全微分方程 6. 线性方程.
DCN 多核防火墙快速配置之 目的 NAT 配置 神州数码网络 蒋忠平.
PHPCMS 使用指南及二次开发向导 --- 系统设置篇 PHPCMS 网络培训课程 --- 系统设置篇 PHPCMS 项目部 王官庆制作 系统相关设置 1. 站点管理 2. 发布点管理 3. 系统其它设置 管理员设置 1. 角色定义 2. 管理员管理.
HistCite 结果分析示例 罗昭锋. By:SC 可能原因:文献年度过窄,少有相互引用.
Evernote 简介 —— 笔记管理软件 小组成员: 姓名 学号 邵亚平 SC 刘胜菊 SC 李丽丽 SC 周 洋 SC
本幻灯为医用耗材集中询价采购网上操作说明,请参考收费说明、供应厂商流程等文件 综合学习。幻灯次序按操作次序进行,可配合自身用户名对照学习。 操作人员:所有类别 操作说明:所有标 new 标志的文件,务必仔细查看。原有用户名和信息均可继续使用,新 使用人员可点击注册申请使用.
嵌入式操作系统 陈香兰 Fall 系统调用 10/27/09 嵌入式 OS 3/12 系统调用的意义  操作系统为用户态进程与硬件设备进行交互提供 了一组接口 —— 系统调用  把用户从底层的硬件编程中解放出来  极大的提高了系统的安全性  使用户程序具有可移植性.
塑 性 加 工 学 实 验 课 件塑 性 加 工 学 实 验 课 件 — 金属室温压缩变形抗力测定及加工硬化分析 南京理工大学材料科学与工程系 制作人:尹德良.
地理信息系统概述. 数据和信息 (Data & Information) 数据 原始事实 如:员工姓名, 数据可以有数值、图形、声音、视觉数据等 信息 以一定规则组织在一起的事实的集合。
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第六十二讲 ) 离散数学. 最后,我们构造能识别 A 的 Kleene 闭包 A* 的自动机 M A* =(S A* , I , f A* , s A* , F A* ) , 令 S A* 包括所有的 S A 的状态以及一个 附加的状态 s.
1 为了更好的揭示随机现象的规律性并 利用数学工具描述其规律, 有必要引入随 机变量来描述随机试验的不同结果 例 电话总机某段时间内接到的电话次数, 可用一个变量 X 来描述 例 检测一件产品可能出现的两个结果, 也可以用一个变量来描述 第五章 随机变量及其分布函数.
什么是 MPI? MPI(Message Passing Interface ) MPI 是一个库,而不是一门语言; MPI 是一个库,而不是一门语言; MPI 是一种标准或规范的代表,而不特 指某一个对它的具体实现; MPI 是一种标准或规范的代表,而不特 指某一个对它的具体实现; MPI 是一种消息传递编程模型,并成为.
Harris Spring 2005 讲座一 “ERP 与企业流程再造 ” 东南大学 自控系 赵霁教授 电话: 一 ERP 是什么? 二企业为什么要引入 ERP 系统? 三企业管理软件的发展与 ERP 的创新之处 四 ERP 与流程再造的关系。 五 企业流程再造规划分析。
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第三十八讲 ) 离散数学. 第八章 格与布尔代数 §8.1 引 言 在第一章中我们介绍了关于集 合的理论。如果将 ρ ( S )看做 是集合 S 的所有子集组成的集合, 于是, ρ ( S )中两个集合的并 集 A ∪ B ,两个集合的交集.
第 5 章 分布式文件管理 中国科技大学软件学院 丁箐. 2 主要内容 5.1 分布式文件5.1 分布式文件设计 5.2 分布式文件系统的实现 5.3 分布式文件系统的5.3 分布式文件系统的趋势.
协同工作环境研究中心 协同共享 助力科研. 主要内容  认识协同及协同软件  协同科研软件 duckling 介绍.
线性代数习题课 吉林大学 术洪亮 第一讲 行 列 式 前面我们已经学习了关 于行列式的概念和一些基本 理论,其主要内容可概括为:
第 4 章 过程与变量的作用范围. 4.1 Visual Basic 的代码模块 Visual Basic 的应用程序是由过程组成的, 过程代码存放在模块中。 Visual Basic 提供了 三类模块,它们是窗体模块、标准模块和类 模块。 窗体模块 窗体模块是大多数 Visual Basic.
数 学 系 University of Science and Technology of China DEPARTMENT OF MATHEMATICS 第 3 章 曲线拟合的最小二乘法 给出一组离散点,确定一个函数逼近原函数,插值是这样的一种手段。 在实际中,数据不可避免的会有误差,插值函数会将这些误差也包括在内。
2.3 结构的功能和极限状态 结构的组成和安全等级 建筑结构的功能要求 结构的极限状态.
聚合物在生物高分子分离中的应用 王延梅 中国科学技术大学高分子科学与工程系 Tel
实验三: 用双线性变换法设计 IIR 数字滤波器 一、实验目的 1 熟悉用双线性变换法设计 IIR 数字滤波器的原理与方法。 2 掌握数字滤波器的计算机仿真方法。 3 通过观察对实际心电图信号的滤波作用, 获得数字滤波的感性知 识。
OS 进程调度模拟演示 制作人: 钱晶 高上上. OS 进程调度模拟-实验原理 静态优先级原理 在这种方式下,系统一旦把处理机分配给就绪队 列中的优先权最高的进程后,该进程便一直执行下去, 直至完成。或因为发生某事件使该进程放弃处理机,系 统方可再将处理机分配给另一优先级最高的进程。这些 事件包括有优先级更高的进程进入,或是因为某些原因.
1 第 7 章 专家控制系统 概述 专家系统的起源与发展 专家系统的一般结构 专家系统的知识表示和获取 专家系统的特点及分类.
操作系统原理课程设计指南 姜海燕 设计考核幻灯制作  1.1 封皮:系统名称,研制人员  1.2 目的及意义  1.3 功能设计:功能框图、用例图  1.4 结构设计:系统结构  1.5 核心技术及技术路线:画图  1.6 进度安排  1.7 人员安排  1.8.
实验二 一对因子的遗传与伴性遗传. 一、实验原理和目的 通过对果蝇一对相对性状的杂交试验,验 证孟德尔分离定律。 进一步理解和验证伴性遗传规律及其和常 染色体遗传的区别。 白眼 正交: ♀ 红眼黑身 × 白眼棕身 ♂ 白眼 反交: ♀ 白眼棕身 × 红眼黑身 ♂
主讲教师:陈殿友 总课时: 124 第十一讲 极限的运算法则. 第一章 二、 极限的四则运算法则 三、 复合函数的极限运算法则 一 、无穷小运算法则 机动 目录 上页 下页 返回 结束 §5 极限运算法则.
东南大学计算中心 网站应用与实践 主讲人 吴俊. 2 东南大学计算中心 网站制作流程  确定主题、风格  规划栏目、收集素材  版面设计、配色  编辑页面  测试发布 FrontPage 要完成的任务.
Photoshop CS4 标准培训教程 第三章第三章 在 Photoshop CS4 中所谓的不规则选区指的是随意性强,不被局限在几何形状内, 他们可以是鼠标任意创建的也可以是通过计算而得到的单个选区或多个选区。在 Photoshop 中可以用来创建不规则选区的工具被分组放置到套索工具组、魔棒工具组.
1 学籍归档工作 年学籍归档工作安排 从 2008 年开始,改为按届移交档案 从 2008 年开始,改为按届移交档案 今年的归档工作范围: 今年的归档工作范围: 2014 年应届毕业班级 2014 年应届毕业班级 2014 年办理毕业证的往届生。 2014 年办理毕业证的往届生。 整理内容:根据.
第5章 键盘与鼠标接口 5.1 键盘概述 5.2 键盘的工作原理 5.3 PC扩展键盘接口 5.4 键盘中断与键盘I/O 5.5 鼠标接口.
湖南省赛宝软件服务有限公司 信息报送及申报系统演示 湖南省赛宝软件服务有限公司 李纠.
第二章 通信技术基础 谈英姿 东南大学自控系工业自动化教研室. 通信技术基础 2.1 通信的基本概念 2.2 通信协议与网络层次分析 2.3 常用串行通信技术.
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第五十三讲 ) 离散数学. 定义 设 G= ( V , T , S , P ) 是一个语法结构,由 G 产生的语言 (或者说 G 的语言)是由初始状态 S 演绎出来的所有终止符的集合, 记为 L ( G ) ={w  T *
编译原理总结. 基本概念  编译器 、解释器  编译过程 、各过程的功能  编译器在程序执行过程中的作用  编译器的实现途径.
小组讨论:尹智逊、赵宝忠、刘荣、唐雪宗 Mean Time Between Failure 平均故障时间 Member赵宝忠刘荣尹智逊唐雪宗.
 符号表  标识符的作用: 声明部分:定义了各种对象及对应的属性和 使用规则。 程序体:对所定义的对象进行各种操作。 $ididname IdnameAttributeIR  必要性 Token : 新表-符号表(种类、类型等信息):
Department of Mathematics 第二章 解析函数 第一节 解析函数的概念 与 C-R 条件 第二节 初等解析函数 第三节 初等多值函数.
1 第 7 章 存储过程、触发器和程序包 在很多时候,都需要保存 PL/SQL 程序块,以便 随后可以重新使用。这也意味着,程序块需要一个名 称,这样需才可以调用或者引用它。命名的 PL/SQL 程序块可被独立编译并存储在数据库中,任何与数据 库相连接的应用程序都可以访问这些存储的 PL/SQL 程序块。
系统介绍 一 二 系统登录 三 使用流程 四 信息维护 系统介绍 根据中国政府与有关国家政府签署的相互出具《最终用户和最终 用途说明》的协议,为了便利企业申办《最终用户和最终用途说 明》, 商务部机电和科技产业司委托中国国际电子商务中心开发了 《最终用户和最终用途说明》申请系统,企业可通过此系统填写.
网上预约集港操作指南 一、登录系统 登陆下面图片显示网址:输入堆场用户名、密码和校验码登陆系统.
晒课系统功能介绍 抚顺市教师进修学院电教部. 一、系统整体功能介绍 二、教师如何晒课 三、教研员如何协助 四、管理员的权限 五、时间安排及注意问题.
首 页 首 页 上一页 下一页 本讲内容本讲内容 视图,剖视图(Ⅰ) 复习: P107 ~ P115 作业: P48(6-2,6-4), P49( 去 6-6) P50, P51(6-13), P52 P50, P51(6-13), P52 P53 (6-18,6-20) P53 (6-18,6-20)
《 UML 分析与设计》 交互概述图 授课人:唐一韬. 知 识 图 谱知 识 图 谱知 识 图 谱知 识 图 谱.
Introduction to Automatic Control The Laplace Transform Li Huifeng Tel:
刘相兵 (Maclean Liu) 介绍 dbms_registry PL/SQL 程序包.
新一代移动物联系统 MC MOBILE CONTROL 开启办公物联网时代 Product Promotion.
项目七: PLC 功能指令应用 带进位循环左移指令 XXXXX. 项目七: PLC 功能指令应用 FX2 系列可编程控制器移位控制指令有移位、循环移位、字移位 及先进先出 FIFO 指令等 10 条指令。 带进位循环右移指令 RCR 带进位循环左移指令 RCL 字右移位指令 WSFR 先入先出读出指令.
Java 水晶报表. 目录 水晶报表开发 (CrystalReports 2008) Java 水晶报表 (JBuilder 2005) 报表项目布署 (WebSphere v6.1)
EC 营客通产品操作(九) EC 营客通产品操作(九) 400 电话 400 电话. 400 电话有助于提升企业形象,无论企业地址变更、机构 变化、人员变动,联系方式永远不变。且在 EC 上申请的 400 电话可以在 EC 平台上进行统一的 400 电话接听及 400 电话客服的管理。
§10.2 对偶空间 一、对偶空间与对偶基 二、对偶空间的有关结果 三、例题讲析.
企业产品标准信息公共服务平台 操作介绍 目录 一 、系统架构介绍 二 、企业产品标准自我声明填报系统 三 、企业产品标准公示系统.
表单自定义 “ 表单自定义 ” 功能是用于制作表单的 工具,用数飞 OA 提供的表单自定义 功能能够快速制作出内容丰富、格 式规范、美观的表单。
算得清写的准 —— 物业费公示报告的编写 讲师:朱芸 物业费的 构成? 哪些是管 理人员工 资呢? 哪些算工程费 用? 怎样才能核 算的清楚呢?
荆门市总工会会员信息采集系统 操作培训 融建信息技术有限公司 肖移海 QQ群号:
逻辑设计基础 1 第 7 章 多级与(或)非门电路 逻辑设计基础 多级门电路.
“ 百链 ” 云图书馆. 什么是百链云图书馆?1 百链云图书馆的实际效果?2 百链云图书馆的实现原理?3 百链云图书馆的价值?44 图书馆要做什么?55 提 纲.
参考文献管理软件. 常见参考文献管理软件 : 中文 : CNKI E-learning (目前免费) NoteExpress NoteFirst 英文: Refworks Endnote (网络版免费) Mendeley……
新奥能源综合运营调度模式 研究及信息化实现 2016年1月31日 2016年1月31日 2016年1月31日 李 伟李 伟.
感谢您的关注 联系电话: – 677 手机: QQ :
一、 版 面 构 成 的 概 念 版 面 构 成 的 概 念 二、 版 面 构 成 的 发 展 趋 势 版 面 构 成 的 发 展 趋 势 三、 广 告 文 字 的 版 面 构 成 广 告 文 字 的 版 面 构 成 四、 广 告 版 面 的 视 觉 流 程 广 告 版 面 的 视 觉 流 程.
U niversity of S cience and T echnology of C hina VxWorks 及其应用开发 陈香兰 年 7 月.
张勤 人大报刊复印资料 专题全文数据库 简 介简 介 《人大报刊资料全文数据库》是中国人民大 学书报资料中心与北京博利群电子信息有限 公司联合开发研制的大型数据库光盘。它涵 盖面广、信息量大、分类科学、筛选严谨、 结构合理,是国内最具权威的社会科学、人.
进口食品标签中介服务平台介绍 上海顺益信息科技有限公司. 目录页 平台操作 平台定义 平台功能 进口食品标签中介服务平台介绍.
第二节. 广告牌为什么会被风吹倒? 结构的稳定性: 指结构在负载的作用下 维持其原有平衡状态的能力。 它是结构的重要性质之一。
参展主要内容 以信息科技支撑现代农业为主题,包括精准农业、数字农业、农 业物联网、农业遥感、信息服务 5 部分内容,重点展示科研院所、大 专院校等单位的科研成果及应用示例。精准农业重点展示面向设施、 果园、大田生产管理过程中的关键技术及智能装备,以精准施肥、施 药、灌溉大型机具实物展示为主,同时将搭建微型温室(约.
SCI 数据库检索练习参考 本练习完全依照 SCI 数据库实际检索过程而 实现。 本练习完全依照 SCI 数据库实际检索过程而 实现。 练习中,选择了可以举一反三的题目,读 者可以根据题目进行另外的检索练习,如: 可将 “ 与 ” 运算检索改为 “ 或 ” 、 “ 非 ” 运算检索 等等。 练习中,选择了可以举一反三的题目,读.
SME.USTB Human Factors 人机工程学 By Wei Dong Department of Industry Design, SME, USTB.
Presentation transcript:

DAT340 实现异步消息队列 ---SQL Server 2005 Service Broker

异步式编程环境和队列功能 – Service Broker 回答三个问题: 什么时候需要异步队列操作 ? Service Broker 是什么 ? 为什么要在数据库中处理消息 ? 具体实现与演示

当数据库项目开始的时候 VBSQL.OXCVBSQL.OXC Database Application ADOADO OLEDBOLEDB DB-LibraryDB-Library SQLNCLISQLNCLI Client Network Library.NET Framework Data Provider for SQL Server.NET Framework Data Provider for SQL Server Storage Engine Relational Engine TSQL Endpoint Server Network Library SQL Server Architecture of Data Access Technologies

重新考虑软件构架中的因素 性能 吞吐量 容量 功能性 可用性 恢复力 失效安全 容错能力 Have an architecture that makes sense before you write 3.5 million lines of code. 技术因素 区别 - 没有运动的部分 - 可以创建新材料 - 可以改变物理现象 避免失败 - 将关键部分分散开来 - 语义上的一致性 - 职责分散

在超市里排队 

在机场里排队 在机场里排队

异步消息队列的使用场景 股票交易系统中的结算活动订单输入系统中的发货信息 旅行预订系统在客户填写完路线后再进行实际的 预订, 并在预订完成后发达确认电子邮件

Q2 : Services Broker 是什么? 为什么排队应用程序难以编写?

消息的完整性分布事务性消息传送

The Architecture of SQL Server 2005 SQL Server 2005 Database Engine Replication Full-Text Search Service Broker Analysis Services Integration Services Reporting Services Notification Services SQL Server Agent

Service Broker 是什么 ? Platform for building asynchronous queued database applications Queues as first class database objects Queue manipulation built into TSQL Transactional message processing Reliable distributed queuing

Use Service Broker when you need to: Scale out the system Improve reliability and availability Improve application response time Build an auditing system Maintain up-to-date cached data Scale out the system Improve reliability and availability Improve application response time Build an auditing system Maintain up-to-date cached data Factors to consider Large messages Reliable messaging Heterogeneous data Security 考虑使用 Service Broker 的因素

Service Broker 消息处理事务的步骤 1. 开始事务。 2. 从会话组中接收一条或多条消息。 3. 从状态表中检索会话的状态。 4. 处理消息并根据消息内容对应用程序数据进行一项或多 项更新。 5. 发送一些 Service Broker 消息:即,将响应发送到传入 的消息或将消息发送到处理传入消息所需的其他服务。 6. 如果此会话组包含其他消息,则读取和处理此会话组中 的其他消息。 7. 使用新的会话状态更新会话状态表。 8. 提交事务

Q3 :为什么要在数据库中处理消息 ?

为什么要在数据库中进行消息传送?消息和数据的单客户端连接。事务性消息传送不需要分布式事务或两阶段提交。备份和恢复数据库还可以备份和恢复消息队列。群集或数据库镜像确定队列中的操作非常简单在提交事务时只需写入单个日志可靠的消息传送通常将消息从传送队列传送到接收队列

队列读取器管理

Activation

具体实现与演示

Service Broker 系统架构 SQL Server Object Description Message Type Defines valid messages for exchange between services Contract Specifies type of messages and their direction in a conversation, initiator or target Queue Stores messages before sending and after receipt as result set Service Program The part of a service broker application that reads messages from a queue and processes them. Service Addressable endpoint for service communication Service program Contract Service Queue Message type

如何实现 Service Broker How to Enable Service Broker in a Database Implementing Services  How to Create Contracts  How to Create Queues  How to Create Services  How to Send a Message  How to Receive a Message

How to Enable Service Broker in a Database Check Service Broker status 1 1 Enable Service Broker 2 2 SELECT is_broker_enabled FROM sys.databases WHERE database_id = db_id() SELECT is_broker_enabled FROM sys.databases WHERE database_id = db_id() ALTER DATABASE AdventureWorks SET ENABLE_BROKER ALTER DATABASE AdventureWorks SET ENABLE_BROKER

Implementing Services Design: Message types Contracts Queues Services Service program logic Message types Contracts Queues Services Service program logic

1.How to Create Contracts Create message types 1 1 Create contract 2 2 CREATE CONTRACT [//Adventure-Works.com/Expenses/ProcessExpense] ( [//Adventure-Works.com/Expenses/ExpenseClaim] SENT BY INITIATOR, SENT BY INITIATOR, [// Adventure-Works.com/Expenses/ClaimResponse] [// Adventure-Works.com/Expenses/ClaimResponse] SENT BY TARGET ) SENT BY TARGET ) CREATE CONTRACT [//Adventure-Works.com/Expenses/ProcessExpense] ( [//Adventure-Works.com/Expenses/ExpenseClaim] SENT BY INITIATOR, SENT BY INITIATOR, [// Adventure-Works.com/Expenses/ClaimResponse] [// Adventure-Works.com/Expenses/ClaimResponse] SENT BY TARGET ) SENT BY TARGET ) CREATE MESSAGE TYPE [//Adventure-Works.com/Expenses/ExpenseClaim] VALIDATION = WELL_FORMED_XML CREATE MESSAGE TYPE [//Adventure-Works.com/Expenses/ClaimResponse] VALIDATION = VALID_XML WITH SCHEMA COLLECTION awschemas CREATE MESSAGE TYPE [//Adventure-Works.com/Expenses/ExpenseClaim] VALIDATION = WELL_FORMED_XML CREATE MESSAGE TYPE [//Adventure-Works.com/Expenses/ClaimResponse] VALIDATION = VALID_XML WITH SCHEMA COLLECTION awschemas

2.How to Create Queues Create queue name 1 1 Choose whether queue is available 2 2 Specify any activation parameters 3 3 CREATE QUEUE ExpenseQueue CREATE QUEUE ExpenseQueueWithActivation WITH STATUS = OFF, ACTIVATION ( PROCEDURE_NAME = ProcessExpense, MAX_QUEUE_READERS = 5, EXECUTE AS SELF) CREATE QUEUE ExpenseQueue CREATE QUEUE ExpenseQueueWithActivation WITH STATUS = OFF, ACTIVATION ( PROCEDURE_NAME = ProcessExpense, MAX_QUEUE_READERS = 5, EXECUTE AS SELF)

Create service name 3.How to Create Services 1 1 Choose storage queue List contracts for which the service is a target Choose whether to retain messages for conversation lifetime CREATE SERVICE [//Adventure-Works.com/SubmitExpense] ON QUEUE ExpenseQueue ( [//Adventure-Works.com/Expenses/ProcessExpense] ) CREATE SERVICE [//Adventure-Works.com/SubmitExpense] ON QUEUE ExpenseQueue ( [//Adventure-Works.com/Expenses/ProcessExpense] )

4.How to Send a Message Declare a dialog handle variable 1 1 Begin a dialog conversation 2 2 Send the message 3 3 uniqueidentifier BEGIN DIALOG FROM SERVICE [//Adventure-Works.com/SubmitExpense] TO SERVICE '//Adventure-Works.com/ProcessExpense' ON CONTRACT [//Adventure-Works.com/Expenses/ProcessExpense] uniqueidentifier BEGIN DIALOG FROM SERVICE [//Adventure-Works.com/SubmitExpense] TO SERVICE '//Adventure-Works.com/ProcessExpense' ON CONTRACT [//Adventure-Works.com/Expenses/ProcessExpense] uniqueidentifier BEGIN DIALOG FROM SERVICE [//Adventure-Works.com/SubmitExpense] TO SERVICE '//Adventure-Works.com/ProcessExpense' ON CONTRACT [//Adventure-Works.com/Expenses/ProcessExpense] SEND ON MESSAGE TYPE [//Adventure-Works.com/Expenses/ExpenseClaim] uniqueidentifier BEGIN DIALOG FROM SERVICE [//Adventure-Works.com/SubmitExpense] TO SERVICE '//Adventure-Works.com/ProcessExpense' ON CONTRACT [//Adventure-Works.com/Expenses/ProcessExpense] SEND ON MESSAGE TYPE [//Adventure-Works.com/Expenses/ExpenseClaim]

5.How to Receive a Message Declare variables for storing message details 1 1 Call RECEIVE statement 2 2 Check the message type, and process accordingly 3 3 If finished conversation, call END CONVERSATION 4 4 UNIQUEIDENTIFIER NVARCHAR(256) UNIQUEIDENTIFIER NVARCHAR(256) UNIQUEIDENTIFIER NVARCHAR(256) ;RECEIVE = = = message_body FROM ExpenseQueue UNIQUEIDENTIFIER NVARCHAR(256) ;RECEIVE = = = message_body FROM ExpenseQueue UNIQUEIDENTIFIER NVARCHAR(256) ;RECEIVE = = = message_body FROM ExpenseQueue IF = '//Adventure-Works.com/Expenses/ExpenseClaim') -- … -- … UNIQUEIDENTIFIER NVARCHAR(256) ;RECEIVE = = = message_body FROM ExpenseQueue IF = '//Adventure-Works.com/Expenses/ExpenseClaim') -- … -- … UNIQUEIDENTIFIER NVARCHAR(256) RECEIVE = = = message_body FROM ExpenseQueue IF = '//Adventure-Works.com/Expenses/ExpenseClaim') -- … -- … END UNIQUEIDENTIFIER NVARCHAR(256) RECEIVE = = = message_body FROM ExpenseQueue IF = '//Adventure-Works.com/Expenses/ExpenseClaim') -- … -- … END

Resources Technical Chats and Webcasts Microsoft Learning and Certification MSDN & TechNet Virtual Labs Newsgroups communities/newsgroups/en-us/default.aspx Technical Community Sites User Groups

Resources Blogs Samples 31aa-44dd-9ee8-6b6b6d3d aa-44dd-9ee8-6b6b6d3d6319Forum

© 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

附 : 为什么要在数据库中处理消息 ? Integrated API for Messages and Data Single connection for messaging and other database operations Transactional receives/sends from remote systems Integrated management, deployment, and operations Backup, restore, configuration, monitoring, security Startup and shutdown start, recover and stop Service Broker Queued messages and application session state may be queried Trace Events for monitoring and debugging Messages have database integrity and recoverability

附 : 为什么要在数据库中处理消息 ? Performance advantages for database applications No two-phase commits for transactional messaging Single log write on commit No process boundary crossing to external messaging software Optimized “in-instance” delivery