我正在使用SQL Server Service Broker来处理排队的项目。到目前为止事情进展顺利。
我想做的一件事是能够在不同的进程或线程上并行处理队列中的多个项目,但限制处理,以便特定用户一次只能处理一个项目,以防止一个过分热心的用户,可以挨饿。
并行线程的处理很容易。每个用户的限制并不那么简单。最初我认为我可以将会话组ID设置为用户的id,因此服务代理会自动序列化该组的处理。此时,我还没有找到成功实现此选项的方法。
这可以通过对话组完成吗?有或没有服务经纪人是否有更简单的方法?我是否必须在服务经纪人之外处理它?</ p>
我已经做了很多研究,但它已经开始一起运行了,所以如果我错过了一些明显的东西,请道歉。
答案 0 :(得分:1)
正如您所暗示的那样,您可以在对话和用户之间建立一对一的关系,然后,通过对话组锁定的魔力,SSSB将只为每个用户一次处理一件事。
系统会为会话本身生成ID,因此您无法设置它们,但您可以使用将用户映射到会话的表格。