有人可以解释服务代理中的对话组吗?Sql Server Service Broker对话组
目前,我正在使用服务代理将消息从一台SQL服务器发送到另一台服务器。在发送服务器上,我试图关联消息,以便在接收端对它们进行串行处理。根据文档,会话组似乎非常适合这种情况,但在接收服务器上,消息被分配到与我在发送消息时指定的会话组不同的会话组。
我已经在网络上搜索,发现这种行为似乎意(http://social.msdn.microsoft.com/forums/en-US/sqlservicebroker/thread/baf48074-6804-43ab-844a-cb28a6dce02b/),但后来我感到困惑的语法从(http://msdn.microsoft.com/en-us/library/ms178624.aspx)
WAITFOR(
GET CONVERSATION GROUP @conversation_group_id FROM [dbo].[ReceiveQueue]
)
如果谈话的用处组不会碰到来自发送方的消息,并且使用同一个对话组标识发送的消息在接收方没有相同的对话组标识,那么上面的代码有什么意义?
谢谢。这就是我可以在网上找到的最佳解释。也许这只是我,但关于此功能的Microsoft MSDN文档似乎非常模糊。有关如何序列化接收队列上的消息处理的任何建议?我发送的消息可能会更新接收端的单个记录。这些消息来自不同的来源,因此不能成为同一对话的一部分。我需要确保在接收端相互关联的消息按顺序和顺序处理。 – 2009-08-21 23:08:38
目标可以使用MOVE CONVERSATION将会话分组。然后,它可以将任何“新”对话转移到适当的组中。另一种方法是反转对话启动:'后端'启动对话(并因此控制他们的分组),并且'前端'在对话的*目标*端点上发送。如果后端无法知道最终名称/位置,则可以通过前端发送一条意思为'请在此地址订阅我'的消息来触发'启动'。适当的解决方案取决于您的方案的具体情况。传一个电子邮件给我。 – 2009-08-21 23:50:18
是的,移动对话方法就是我们目前正在研究的方法。担心的是,由于移动会话锁定了目标会话组,并通过对话组获取消息来锁定关联的会话组,所以我们可能会陷入死锁状态。我们正在尝试解决这个问题。感谢您的洞察力。 – 2009-08-24 16:06:46