我正在尝试将服务代理会话转移到另一个群组会话。 代码是:
declare @handle uniqueidentifier;
declare @conversationGroup uniqueidentifier;
begin dialog conversation @handle
from service ConsolidatorService
to service 'ConsolidatorTargetService'
on contract [//Gereon/Consolidator/ConsolidatorContract]
with encryption = off;
get conversation group @conversationGroup from [ConsolidatorTargetQueue];
if(@conversationGroup is not null)
move conversation @handle to @conversationGroup;
send on conversation @handle message type [//Gereon/Consolidator/GeBasicChangesMessage]
(@MessageBody);
但SQL Server会向我返回错误 目标会话群组'60EEBC15-E75E-E611-80CC-00155D090304'无效。
我无法理解为什么get会话返回的group_conversation_id无效。
谢谢
答案 0 :(得分:0)
您正在尝试将发起程序句柄移至目标服务上的组。移动对话只能在同一服务和队列中成功。
您的问题是尝试在接收端实现对话分组的常见问题。有两种替代模式可以实现您的目标:
ConsolidatorService
到ConsolidatorTargetService
开始对话,而是从ConsolidatorTargetService
到ConsolidatorService
开始对话,并在BEGIN CONVERSATION
本身中指定所需的组< / em>的。然后从目标发送消息到发起者。在启动器上接收此消息,然后将此启动器接收的句柄用于ConsolidatorService
的后续发送。仅当您打算发送许多消息时才有意义。这种模式有效,但要正确实现有点棘手。现在,100万美元的问题:为什么你想要在目标上分组对话吗?这有用的有效用途,但我想听听你的理由。