会话目标是否可以使用相同的会话接收来自不同发起者的消息?

时间:2014-01-13 23:50:28

标签: sql sql-server tsql service-broker

我喜欢这篇文章:http://technet.microsoft.com/en-us/library/dd576261(v=sql.100).aspx因为将top top(10000)变成了表变量。处理一个包含10000条消息的表变量会给我带来巨大的性能提升。

receive top (10000) message_type_name, message_body, conversation_handle<br>
     from MySSBLabTestQueue<br>
     into @receive

从阅读开始,接收会提供给出单个conversation_handle的消息。我有200多个商店都发送具有相同消息类型和合同的消息到同一个服务器。我是否可以通过一次调用来实现服务器来获取来自这些商店的所有消息?

由于

1 个答案:

答案 0 :(得分:3)

目标可以使用MOVE CONVERSATION将多个会话合并到几个会话组中。 RECEIVE将结果集限制为单个会话,因此将多个单个会话移动到一个组中可以根据需要生成更大的结果集。

对于记录,发起人还可以使用MOVE CONVERSATION合并对话,此处没有任何特定的角色。但是,发起人也可以使用BEGIN DIALOGRELATED_CONVERSATION_GROUP子句直接在所需的组中开始对话,实现整合,从而实现更大的结果集,而不必使用MOVE。这很有用,因为您可以简单地反转应用中的角色,即。而不是通过中央服务器启动对话的商店,让中央服务器启动与每个商店的对话(从而反转角色),中央服务器可以在尽可能少的会话组中启动对话,甚至1.这消除了需要发出MOVE CONVERSATION。