一起学习网 一起学习网

MSSQL实现订阅与发布模式(mssql实现订阅发布)

订阅与发布模式(Publish/Subscribe Model)是使用一定的消息规范,将消息源(publisher)和消息接收者(subscriber)之间解耦,使得实现发布者发布消息,订阅者接收同类消息的过程更加简单。目前MSSQL在实现这种模式时,一般使用以下三项功能:Service Broker、Transact-SQL消息类型和消息列队。

首先,我们需要理解什么是Service Broker:Service Broker 是一种可实现向消息发送者及接收者隔离的消息发送系统。它使用 Transact-SQL Directly 向 目标 队 列 发送消息,从而实现消息的发送、接收、处理以及控制。Service Broker 构件由broker(服务组件)、Routes (消息路线)、 contract(服务约定)、Service (服务)组成,通过这些组件可以实现对消息类型、分发以及接受等管理工作。

其次,我们来了解一下Transact-SQL消息类型:Transact-SQL消息类型是一种声明性的消息类型,这种声明性的消息将消息传输过程中的消息体定义在数据库级别,这样消息发送者和接收者就可以同时访问相同的消息体信息而无须担心数据兼容性问题。Transact-SQL消息类型的声明格式如下:

create message type [ schemaname. ] messagetypename

[ authorization login_name ]

validation = none

[, ] xml_schema_collection = xml_schema_collection_name

然后,我们需要了解消息列队:消息列队用于存储发送到消息队列的消息,消息队列是一种存储机制,它允许发送者将消息发送到消息队列以供接收者进行异步读取。消息队列只允许一次写入并且可在多个会话中进行异步多次读取,以便将消息传输到消息接收者。下面的 Transact-SQL 语句就用于创建一个列队:

create queue [ schema_name. ] queue_name

[;]

通过Service Broker、Transact-SQL消息类型和消息列队,MSSQL就可以实现订阅与发布模式。 Service Broker validates the contract between the publisher and the subscriber, and handles the routing of messages according to the contract. The Transact-SQL message type defines the format of the message body, allowing the publisher and subscriber to both work with the same set of data without worrying about compatibility. Finally, the message queue stores the messages sent to it, which are retrieved by the subscriber asynchronously.