当前位置:  开发笔记 > 数据库 > 正文

MSMQ v数据库表

如何解决《MSMQv数据库表》经验,为你挑选了3个好方法。

现有流程响应用户输入更改表中预订记录的状态字段.

我有另一个要编写的进程,它将为具有特定状态的记录异步运行.它将读取表记录,执行一些操作(包括对第三方Web服务的调用),并更新记录的状态字段以指示处理已完成(或错误,错误计数).

此操作听起来非常类似于队列.在这种情况下使用MSMQ而不是SQL表有什么好处和权衡,为什么我要选择一个而不是另一个?

我们的软件是在表格中添加和更新记录.

这是一项将执行异步处理的新工作(Windows服务).这需要"永远向上".



1> Mitch Wheat..:

有几个原因,在Fog Creek论坛上讨论过:http://discuss.fogcreek.com/joelonsoftware5/default.asp?cmd = show &ixPost = 173704 &ixReplies = 5

主要的好处是,当计算机之间存在间歇性连接时,仍然可以使用MSMQ(使用本地计算机上的存储和转发机制).就应用程序而言,它将消息传递给MSMQ,即使MSMQ稍后可能会传递消息.

只有在可以连接到数据库时,才能将记录插入表中.

当需要工作流方法时,表格方法更好,并且流程将经历各个阶段,并且这些阶段需要在DB中持久存在.


Seun,为了可扩展性,数据库通常位于自己的服务器上.消息队列实际上是本地的,因此在中断的情况下您仍然可以发布.在恢复连接时转发消息而不会丢失任何消息,或者破坏应用程序.

2> ewalshe..:

如果创建预订记录的比率很低,我会让第二个过程定期检查表格中的新预订.

除非您已经在使用MSMQ,否则只需提供一个额外的平台组件即可.

如果数据库负载很重,或者您在两个进程读取和写入预订表的同一区域时遇到大量锁争用,那么请考虑引入MSMQ.



3> David White..:

我也很喜欢这个答案勒dorfier在前面的讨论:

我首先使用了表,然后在(如果)有原因的情况下重构成一个成熟的msg队列 - 如果你的设计合理,这是微不足道的.

谢谢,伙计们,所有的答案.最有帮助的.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有