相关疑难解决方法(0)

Sql Server Service Broker对话组

有人可以解释服务经纪人中的对话组吗?

目前,我正在使用服务代理将消息从一个SQL服务器发送到另一个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]
)
Run Code Online (Sandbox Code Playgroud)

如果会话组没有遇到来自发件人的邮件,并且使用相同会话组ID发送的邮件在接收方没有相同的会话组ID,那么上面代码的重点是什么?

sql-server service-broker

7
推荐指数
1
解决办法
5787
查看次数

Sql Server Service Broker

目前我们正在使用服务代理来回发送消息,这是正常的.但我们希望使用RELATED_CONVERSATION_GROUP对这些消息进行分组.我们希望用我们自己的数据库,从我们的数据库坚持UUID作为RELATED_CONVERSATION_GROUP = @uuid,但即使我们使用相同的UUID每次conversion_group_id每次我们收到的排队时间来不同.

你们知道我创建经纪人或接听电话的方式有什么问题,我提供了下面的经纪人创建代码和接收电话代码.谢谢

下面是代码"Service Broker创建代码"

CREATE PROCEDURE dbo.OnDataInserted

@EntityType NVARCHAR(100),
@MessageID BIGINT,
@uuid uniqueidentifier,
@message_body nvarchar(max)
AS

BEGIN

SET NOCOUNT ON;

 DECLARE @conversation UNIQUEIDENTIFIER

BEGIN DIALOG CONVERSATION @conversation
FROM SERVICE DataInsertSndService
TO SERVICE 'DataInsertRcvService'
ON CONTRACT DataInsertContract
WITH RELATED_CONVERSATION_GROUP = @uuid;

SEND ON CONVERSATION @conversation
MESSAGE TYPE DataInserted
(CAST(@message_body))
Run Code Online (Sandbox Code Playgroud)

下面是代码"接收代码"

WHILE 0 < @@TRANCOUNT ROLLBACK; SET NOCOUNT ON

BEGIN TRANSACTION;

DECLARE 
@cID as uniqueidentifier, 
@conversationHandle as uniqueidentifier,
@conversationGroupId as uniqueidentifier,
@tempConversationGroupId as uniqueidentifier,
@message_body VARBINARY(MAX)

RAISERROR ('Awaiting Message ...', …
Run Code Online (Sandbox Code Playgroud)

sql database sql-server service-broker

4
推荐指数
1
解决办法
3006
查看次数

标签 统计

service-broker ×2

sql-server ×2

database ×1

sql ×1