Service Broker 要点2008-04-18 09:12:21 来源:中国自学编程网 作者:佚名 点击:
--Service Broker 简介 Service Broker是使SQL Server成为一个构建可靠的分布式异步应用程序平台。 ![]() 消息正文必须包含与指定架构集合中架构一致的 XML。schema_collection_name 必须是现有 XML 架构集合的名称。
--约定(Contracts) SQL Server 2005中没有提供用于添加或移除消息类型的ALTER CONTRACT语句,你必须保证创建约定正确无误。 更改消息类型列表的唯一方法是删除约定后在重建。 注:如果你没有指定消息类型和约定,将使用DEFAULT的消息类型和一个包含DEFAULT消息类型DEFAULT约定。 --队列(Queues) 队列是唯一实际存储数据的Services Broker对象,因此可以指定存储消息的文件组。 队列可以是 SELECT 语句的目标。但是,只能使用在 Service Broker 会话中运行的语句(如 SEND、RECEIVE 和 END CONVERSATION)来修改队列的内容。 队列不能是 INSERT、UPDATE、DELETE 或 TRUNCATE 语句的目标。 队列不能是临时对象。所以,以 # 开头的队列名称是无效的名称。 以STATUS 设置为OFF创建队列,可以先准备好服务的基础结构,然后再允许在队列中接收消息。 STATUS(激活)指定 Service Broker 是否激活该存储过程。当 STATUS = ON 时,如果当前运行的过程数小于 MAX_QUEUE_READERS,并且消息抵达队列的速度比存储过程接收消息的速度快,则队列将启动用 PROCEDURE_NAME 指定的存储过程。当 STATUS = OFF 时,队列不激活存储过程。如果未指定该子句,则默认为 ON。 MAX_QUEUE_READERS = max_readers 指定队列同时启动的激活存储过程的最大实例数。max_readers 的值必须是 0 到 32767 之间的数字。 注:设置RETENTION为ON 队列的status被设为0,表示它已经被应用程序接收和处理而且事务已经提交。并且消息不会被删除, 而是保留副本在队列中。这时队列很快会变得非常大,性能也会急剧下降。 但是你需要通过运行补偿事务回退长时间运行的业务事务,会很有用! 每个数据库只有一个sys.transmission_queue 视图,临时存放消息。 情景:目标位于不同的SQL Server实例中;目标队列无效,STATUS = OFF; 目标队列所在的数据库的ENABLE_BROKER 未设置;目的地未知。 --服务(Services) 服务是会话端点的名称. 注:创建会话时,发起会话的会话端点不检查发起方的服务列表。因此发起方的服务列表通常为空。 如果发起方的没有约定,一旦发起方的服务列表出现问题,你永远不知道。 --发起和结束会话 BEGIN DIALOG CONVERSATION @Dialog FROM SERVICE [//microsoft.com/ManufacturingService] TO SERVICE ’//microsoft.com/InventoryService’ ON CONTRACT [//microsoft.com/Inventory/AddItemContract] WITH ENCRYPTION = OFF, LIFETIME = 3600; O SERVICE参数是一个长度为256的字符串。target_service_name 的类型为 nvarchar(256)。Service Broker 会逐个字节进行比较,确保与 target_service_name 字符串匹配。 换言之,比较时将区分大小写,且不考虑当前的排序规则。 LIFETIME = dialog_lifetime 指定对话将保持打开状态的最长时间。为使对话成功完成,两个端点都必须在生存期内显式结束对话。dialog_lifetime 的值必须以秒为单位。生存期的类型为 int。 如果未指定 LIFETIME 子句,则对话的生存期为 int 数据类型的最大值。 ENCRYPTION 将此对话发送和接收的消息向 Microsoft SQL Server 实例外发送时,是否必须对消息加密。 必须加密的对话是安全对话。如果 ENCRYPTION = ON,但未配置支持加密所需的证书, 则 Service Broker 将返回针对该会话的错误消息。ENCRYPTION = OFF 时, 如果为 target_service_name 配置了远程服务绑定,则使用加密 ;否则,发送消息时不加密。 如果未使用此子句,则默认值为 ON。 相关文章:
|