我正在为SQL Server Service Broker处理排队项的用法制作原型。到目前为止,一切都很顺利。
我想做的一件事是能够在不同的进程或线程上并行处理队列中的几个项目,但限制处理,以便特定用户一次只能处理一个项目,以防止一个过于热心的用户饿死所有其他用户。
并行线程上的处理很容易。对每个用户的限制并不是那么简单。最初,我认为可以将会话组id设置为用户的id,从而使组的处理由服务代理自动序列化。在这一点上,我还没有找到成功实现这个选项的方法。
这是可以通过会话组完成的事情吗?有没有使用或不使用服务代理的更简单的方法?我是否必须在服务代理之外处理它?
我已经做了相当多的研究,但所有这些都开始运行在一起,所以如果我错过了一些明显的东西,我很抱歉。
发布于 2013-09-17 17:30:16
正如您所暗示的,您可以在会话和用户之间建立一对一的关系,然后,通过会话组锁定的魔力,SSSB一次只为每个用户处理一件事情。
系统为会话本身生成id,因此您无法设置它们,但您可以使用一个将用户映射到会话的表。
https://stackoverflow.com/questions/18836159
复制相似问题