2012-04-23 84 views
0

我正在实现许多SSB在两个不同的实例上工作。它们是基于异步触发器的数据推送模式。代理服务发送队列问题

我的SQL信息如下所示:Microsoft SQL Server Management Studio 10.50.2500.0 Microsoft Analysis Services客户端工具10.50.2500.0 Microsoft数据访问组件(MDAC)6.1.7601.17514 Microsoft MSXML 3.0 4.0 5.0 6.0 Microsoft Internet Explorer 9.0.8112.16421 Microsoft .NET框架2.0.50727.5448操作系统6.1.7601

我发现了一些似乎很奇怪我的所有发送队列里填满了的消息从类型 http://schemas.microsoft.com/SQL/ServiceBroker/EndDialog

可以肯定它会在队列性能影响很大,我已经摆脱这些信息。

1-我应该分配一个阅读器到发送队列来结束这些消息吗?

2-或者在结束对话时我在接收方做了什么错误?

回答

3

当前设计的Service Broker消息始终是对话框,这意味着对话中始终有两个参与者。当通话的一端完成时,它会呼叫END CONVERSATION,它将EndDialog消息类型发送给对话中的其他参与者。如果没有其他理由,应该处理这些消息,而不是确保它们不占用空间。您可以在队列上创建一个激活存储过程来处理这些过程。这样,它就会自动发生,你不必担心它。

+0

发送队列上的激活过程是否会影响发送性能? – 2012-04-23 20:56:10

+0

我不明白为什么它会从最小的资源消耗(即磁盘,CPU)。我在这里强调的是微乎其微;如果你所做的只是在发起人处打电话给END CONVERSATION,这应该是微不足道的。但不要听我的话:写下来,看看它是如何为你。一些技巧:1)一次只有一个激活存储器激活。 2)写入存储器,以便它进行接收,直到队列为空(即处理多于一条消息)。 – 2012-04-24 01:45:36

+0

并更好地为错误消息添加一些处理。 – 2012-04-24 12:14:56