Sql server 发送消息时,from服务的作用是什么?
我正在研究SQLServerServiceBroker,并试图理解from服务和发送队列的意义。我看到的许多例子都是这样的Sql server 发送消息时,from服务的作用是什么?,sql-server,service-broker,Sql Server,Service Broker,我正在研究SQLServerServiceBroker,并试图理解from服务和发送队列的意义。我看到的许多例子都是这样的 -- Create Message Type CREATE MESSAGE TYPE TestMessage VALIDATION = NONE GO -- Create Contract CREATE CONTRACT TestContract (TestMessage SENT BY INITIATOR) GO -- Create Send Queue
-- Create Message Type
CREATE MESSAGE TYPE TestMessage
VALIDATION = NONE
GO
-- Create Contract
CREATE CONTRACT TestContract
(TestMessage SENT BY INITIATOR)
GO
-- Create Send Queue
CREATE QUEUE TestSendQueue
GO
-- Create Receive Queue
CREATE QUEUE TestReceiveQueue
GO
-- Create Send Service on Send Queue
CREATE SERVICE TestSendService
ON QUEUE TestSendQueue (TestContract)
GO
-- Create Receive Service on Recieve Queue
CREATE SERVICE TestReceiveService
ON QUEUE TestReceiveQueue (TestContract)
GO
DECLARE @dialog uniqueidentifier
DECLARE @message NVARCHAR(128)
BEGIN DIALOG CONVERSATION @dialog
FROM SERVICE TestSendService
TO SERVICE 'TestReceiveService'
ON CONTRACT TestContract
WITH ENCRYPTION = OFF
-- Send messages on Dialog
SET @message = N'Very First Message';
SEND ON CONVERSATION @dialog
MESSAGE TYPE TestMessage (@message)
GO
-- View messages from Receive Queue
SELECT CONVERT(NVARCHAR(MAX), message_body) AS Message
FROM TestReceiveQueue
GO
-- Receive messages from Receive Queue
RECEIVE TOP(1) CONVERT(NVARCHAR(MAX), message_body) AS Message
FROM TestReceiveQueue
GO
因此,在本例中,当我发送的消息进入TestReceiveQueue时,TestSendQueue和TestSendService的基本意义是什么?我从那里查看和接收消息?另外,为什么
开始对话框中的来自服务
是字符串值,而来自服务
不是字符串值?您需要来自服务,因为“TestReceiveService”发送的回复需要收件人。应用程序在哪里寻找响应
FROM服务是一个符号,因为它必须是本地的、现有的服务。它的存在可以并且将在执行/编译期间得到验证
TO服务是一个字符串,因为它是一个远程名称,不一定在本地出现。它的位置通过路由解决。在执行/编译期间无法对其进行验证。当TO服务是本地的时,您的示例就是一个退化的示例。为了更好地理解一些需求/语法和明显的异常现象,请尝试将每个示例视为远程示例(服务在不同的机器上)