消息类型

使用 Service Broker 的应用程序之间通过互相发送组成会话的消息进行通信。会话的各参与者必须对每个消息的名称和内容取得一致。“消息类型对象”定义消息类型的名称并定义消息所包含的数据的类型。消息类型保存在创建它的数据库中。在参与会话的每个数据库中应创建相同的消息类型。

每种消息类型指定 SQL Server 对该类型消息所执行的验证。SQL Server 可验证消息是否包含有效的 XML、消息是否包含符合特定架构的 XML 或者消息中是否根本没有数据。对于任意数据或二进制数据,消息类型可指定 SQL Server 不验证消息的内容。

当目标服务收到消息时,开始执行验证。如果消息的内容与指定的验证不匹配,则 Service Broker 会向发送该消息的服务返回一条错误消息。

重要说明重要提示

无论怎样指定验证,应用程序都必须在程序使用数据之前验证消息的内容是否适合它。

对于空消息类型,消息的正文一定不能包含数据。对于指定正确 XML 格式的消息类型,消息的正文必须为格式正确的 XML。对于指定符合特定架构集合的 XML 的消息类型,消息必须包含格式正确的 XML,且该 XML 对集合中的架构之一有效。对于没有指定验证的消息类型,SQL Server 可接受任何消息内容。这包括二进制数据、XML 或空消息。

Service Broker 提供一个名为 DEFAULT 的内置消息类型。如果未在 Service Broker SEND 命令中指定消息类型,则系统将使用 DEFAULT 消息类型。

Service Broker 包含用于报告错误和对话状态的系统消息类型。有关详细信息,请参阅 Broker 系统消息