Sql server 发送消息时,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

我正在研究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 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服务是本地的时,您的示例就是一个退化的示例。为了更好地理解一些需求/语法和明显的异常现象,请尝试将每个示例视为远程示例(服务在不同的机器上)