现有流程响应用户输入更改表中预订记录的状态字段.
我有另一个要编写的进程,它将为具有特定状态的记录异步运行.它将读取表记录,执行一些操作(包括对第三方Web服务的调用),并更新记录的状态字段以指示处理已完成(或错误,错误计数).
此操作听起来非常类似于队列.在这种情况下使用MSMQ而不是SQL表有什么好处和权衡,为什么我要选择一个而不是另一个?
我们的软件是在表格中添加和更新记录.
这是一项将执行异步处理的新工作(Windows服务).这需要"永远向上".
有几个原因,在Fog Creek论坛上讨论过:http://discuss.fogcreek.com/joelonsoftware5/default.asp?cmd = show &ixPost = 173704 &ixReplies = 5
主要的好处是,当计算机之间存在间歇性连接时,仍然可以使用MSMQ(使用本地计算机上的存储和转发机制).就应用程序而言,它将消息传递给MSMQ,即使MSMQ稍后可能会传递消息.
只有在可以连接到数据库时,才能将记录插入表中.
当需要工作流方法时,表格方法更好,并且流程将经历各个阶段,并且这些阶段需要在DB中持久存在.
如果创建预订记录的比率很低,我会让第二个过程定期检查表格中的新预订.
除非您已经在使用MSMQ,否则只需提供一个额外的平台组件即可.
如果数据库负载很重,或者您在两个进程读取和写入预订表的同一区域时遇到大量锁争用,那么请考虑引入MSMQ.
我也很喜欢这个答案勒dorfier在前面的讨论:
我首先使用了表,然后在(如果)有原因的情况下重构成一个成熟的msg队列 - 如果你的设计合理,这是微不足道的.
谢谢,伙计们,所有的答案.最有帮助的.