Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql ServiceBroker上的多个对话_Sql_Sql Server_Sql Server 2008_Service Broker - Fatal编程技术网

Sql ServiceBroker上的多个对话

Sql ServiceBroker上的多个对话,sql,sql-server,sql-server-2008,service-broker,Sql,Sql Server,Sql Server 2008,Service Broker,假设我有两个同一应用程序的实例与ServiceBroker中的后端服务交互。每个实例如何知道只处理它发起的对话而忽略其余对话?如果我没有记错,每次接收都会从队列中删除消息 下面是一个例子: -- Assume the SquareService return the square of the number sent to it -- Instance 1 BEGIN DIALOG @Conversation1 FROM SERVICE InitService TO SERVI

假设我有两个同一应用程序的实例与ServiceBroker中的后端服务交互。每个实例如何知道只处理它发起的对话而忽略其余对话?如果我没有记错,每次接收都会从队列中删除消息

下面是一个例子:

-- Assume the SquareService return the square of the number sent to it

-- Instance 1
BEGIN DIALOG @Conversation1
    FROM SERVICE InitService
    TO SERVICE 'SquareService'
    ON CONTRACT (MyContract)
    WITH ENCRYPTION = OFF;

    SEND ON CONVERSATION @Conversation1 MESSAGE TYPE MyMessageType('1');

-- Instance 2
BEGIN DIALOG @Conversation2
    ...;
    SEND ON CONVERSATION @Conversation2 MESSAGE TYPE MyMessageType('2');

现在,我应该由谁编写
RECEIVE
语句,以便实例1正确地获取1,实例2正确地获取4?

您已经在使用一个对话组。 这是否不足以满足您在接收信息时的需要? ->使用GET对话组和RECEIVE 您可以在此处阅读更多信息:
在这里

我假设您有一个与您的
InitService
关联的
InitQueue
。您可以将
WHERE
子句与
RECEIVE
一起使用,以侦听同一对话中的消息:

WAITFOR (RECEIVE @response = CONVERT(xml, message_body)
    FROM InitQueue -- InitService setup to use InitQueue?
    WHERE conversation_handle = @Conversation1

谢谢你的回答,满分。Microsoft文档在这个主题上太差了,以至于我甚至不知道
对话组是用来做什么的。