如何启用 SQL Server Service Broker
流程概述
以下是启用 SQL Server Service Broker 的步骤:
步骤 | 描述 |
---|---|
步骤 1 | 检查数据库的兼容性级别 |
步骤 2 | 启用数据库的 Service Broker |
步骤 3 | 创建 Service Broker 对象 |
步骤 4 | 启用 Service Broker 消息传递 |
步骤 5 | 创建消息队列 |
步骤 6 | 创建消息处理程序 |
步骤 7 | 创建消息发送程序 |
步骤 8 | 发送和接收消息 |
详细步骤及代码
步骤 1:检查数据库的兼容性级别
首先,确保数据库的兼容性级别符合要求。Service Broker 需要数据库兼容性级别至少为 90 或更高。
-- 检查数据库兼容性级别
SELECT compatibility_level
FROM sys.databases
WHERE name = '<数据库名>';
步骤 2:启用数据库的 Service Broker
接下来,启用数据库的 Service Broker 功能。
-- 启用 Service Broker
ALTER DATABASE <数据库名> SET ENABLE_BROKER;
步骤 3:创建 Service Broker 对象
创建 Service Broker 所需的消息类型、对话和合同。
-- 创建消息类型
CREATE MESSAGE TYPE <消息类型名称>
VALIDATION = NONE;
-- 创建对话合同
CREATE CONTRACT <合同名称>
(<消息类型名称> SENT BY INITIATOR);
-- 创建服务
CREATE SERVICE <服务名称>
ON QUEUE <队列名称>
(<合同名称>);
-- 创建发送端结束点
CREATE ENDPOINT <发送端结束点名称>
STATE = STARTED
AS TCP (LISTENER_PORT = <监听端口号>)
FOR SERVICE_BROKER (<服务名称>);
步骤 4:启用 Service Broker 消息传递
启用 Service Broker 消息传递以允许消息在数据库之间传递。
-- 启用消息传递
ALTER ENDPOINT <发送端结束点名称> STATE = STARTED;
步骤 5:创建消息队列
创建用于存储待处理消息的队列。
-- 创建队列
CREATE QUEUE <队列名称>;
步骤 6:创建消息处理程序
创建用于处理由 Service Broker 接收的消息的存储过程。
-- 创建消息处理程序
CREATE PROCEDURE <处理程序名称>
AS
BEGIN
SET NOCOUNT ON;
DECLARE @message_body VARBINARY(MAX);
DECLARE @conversation_handle UNIQUEIDENTIFIER;
DECLARE @message_type_name NVARCHAR(256);
WHILE (1 = 1)
BEGIN
-- 从队列中获取消息
WAITFOR (
RECEIVE TOP(1)
@message_body = message_body,
@conversation_handle = conversation_handle,
@message_type_name = message_type_name
FROM <队列名称>
), TIMEOUT 1000;
-- 检查消息类型
IF @message_type_name = '<消息类型名称>'
BEGIN
-- 处理消息
-- TODO: 处理代码
END;
-- 结束对话
END CONVERSATION @conversation_handle;
END;
END;
步骤 7:创建消息发送程序
创建用于发送消息到 Service Broker 的存储过程。
-- 创建消息发送程序
CREATE PROCEDURE <发送程序名称>
AS
BEGIN
SET NOCOUNT ON;
DECLARE @conversation_handle UNIQUEIDENTIFIER;
DECLARE @message_type_name NVARCHAR(256);
-- 开始对话
BEGIN DIALOG CONVERSATION @conversation_handle
FROM SERVICE <服务名称>
TO SERVICE '<目标服务>'
ON CONTRACT <合同名称>
WITH ENCRYPTION = OFF;
-- 发送消息
SEND ON CONVERSATION @conversation_handle
MESSAGE TYPE <消息类型名称>
(<消息内容>);
-- 结束对话
END CONVERSATION @conversation_handle;
END;
步骤 8:发送和接收消息
使用消息发送程序发送消息,并使用消息处理程序接收和处理消息。
-- 发送消息
EXEC <发送程序名称>;
-- 接收和处理消息
EXEC <处理程序名称>;
总结
通过以上步骤,您可以成功启用 SQL Server Service Broker,并使用存储
标签:service,Service,--,步骤,Broker,broker,消息,创建,server From: https://blog.51cto.com/u_16175474/6827825