我不确定如何最好地描述这个或最好的标题,所以请耐心等待!
我正在使用MSMQ排队大量命令,这些命令将触发对各种网站和API的HTTP请求.为了避免锤击这些服务(并保持在某些预定义的请求限制内),我需要确保只有在从最后一个请求开始经过最小时间后才能执行命中同一域的任务.
以前我使用数据库对任务进行排队,因此可以执行查询来实现这一目标,但我们使用任务数量快速超过了该解决方案(表上的死锁方式太多).
有没有人对我们采取什么方法有任何建议?我已经考虑过将项目从队列中删除,直到找到一个可以执行的项目 - 但是我意识到没有什么可以阻止队列上的排序,这意味着我们可以在相同的域中取出数千个,然后再找到一个域.
谢谢!
ste*_*fox 11
嗯,我完全不同意Remus Rusanu的回答.
MSMQ绝不是数据库表中的一个步骤,并且在许多方面可以是一个升级,如果您需要它们,您需要手动构建基于表的解决方案.
请参阅MSMQ v数据库表
在说,根据您的要求,数据库表似乎是最合适的.
MSMQ适用于您不拥有的应用程序之间的通信,如果您不需要立即结果,并且需要可靠的交付(即您可以在与DB断开连接时使用MSMQ,而使用表格方法则需要DB访问.)MSMQ可以进行负载平衡