1

我正在对 SQL Server Service Broker 的原型使用来处理排队的项目。到目前为止,事情进展顺利。

我想做的一件事是能够在不同的进程或线程上并行处理队列中的多个项目,但限制处理,以便特定用户一次只能处理一个项目,以防止一个过度热心的用户免于饿死所有其他人。

并行线程的处理很容易。每个用户的限制并不是那么简单。最初我认为我可以将会话组 id 设置为用户的 id,因此服务代理会自动序列化组的处理。此时,我还没有找到成功实现此选项的方法。

这可以通过对话组完成吗?有或没有服务代理有没有更简单的方法?我是否必须在服务代理之外处理它?

我已经做了很多研究,但它们都开始一起运行,所以如果我错过了一些明显的东西,请道歉。

4

1 回答 1

1

正如您所暗示的,您可以在对话和用户之间建立一对一的关系,然后通过对话组锁定的魔力,SSSB 一次只为每个用户处理一件事。

系统会为会话本身生成 ID,因此您无法设置它们,但您可以使用将用户映射到会话的表。

于 2013-09-17T09:30:15.677 回答