2010-07-15 45 views
1

我刚开始评估ServiceBroker以确定它是否可以在特定上下文中作为可靠队列执行。下面是这种情况:将SQL 2008 ServiceBroker用于大容量线程安全FIFO队列

(1)需要在队列中预先计算耗费计算值和存储的大(几百万)人口。 (2)多个进程将尝试在运行时根据需要读取/出队这些值。每秒可能有数百次读取。

(3)的监视器处理偶尔会轮询队列和确定是否人口最小阈值已达到,并随后将重新填充队列。

由于一些基础设施/成本的限制,工业强度队列(websphere)可能不是一个选项。我目前看到的Service Broker并不令人鼓舞,因为它似乎与2个端点的“对话”隔离开来,在我的场景中,我的阅读完全独立于我的写作。有没有人有任何洞察力,这是否可以使用SQL Service Broker?

回答

0

虽然服务代理并没有被设计为这样的场景,我觉得有一点扭捏它可以在你的情况下工作。

一种方法是预先创建一个会话的池,然后有论文对话之间的计算处理循环存储值时。由于从队列接收会话对会话锁定,因此对话数量本质上设置了有多少进程可同时出列值的上限。我不确定这一点,但是您可能需要接收端的一些逻辑来明确地告诉接收来自哪个对话(以实现比默认接收行为更好的负载平衡)。

如果PERF的不关心,那么你可能甚至有所下降,谈话池想法,在一个单独的对话,这将使在显著PERF命中的成本实现更简单的方式发送每封邮件。

所有上述据说这种假定可能以随机顺序出列的值,否则,你需要使用一个单一的谈话,以保证接受订货。