2012-04-09 67 views
4

我正在使用事务性msmq队列。我需要检查队列中的项目以及添加新项目之前尚未提交的项目。我可以检查事务性msmq队列中的项目

我可以检查队列中的所有项目,但我如何检查已出队但仍未提交的项目?

更新: 我有几个奴隶实例和一个主服务器。每个从设备都可以上传数据(大文件)以便从主设备上下载新数据。

从站在msmq队列中注册主站上传和下载操作,然后启动事务,出列操作,对大文件执行操作,如果所有其他回滚事务都提交事务。

我必须拒绝所有上传注册,直到我确定该文件完全上传为止,因为多个奴隶不必同时上传一个文件。

+0

这是一个我从未见过的新问题。您能否详细谈谈您如何使用队列?一次只有一个项目在队列中吗?在添加新项目之前先检查的原因是什么? – 2012-04-10 10:48:00

+0

查看更新后的信息 – tbicr 2012-04-10 11:19:42

回答

0

对我来说,这听起来更像是你的客户/服务结构的体系结构问题比MSMQ相关的更像。

如果我使用数据库事务处理,我会直观地期望所有客户端在之后才会看到之后的任何更改。在你的场景中,MSMQ的行为就像我从DBMS期望的那样。总而言之,据我了解你的任务,我认为你可能会在看错。考虑跟踪上传服务。如果您需要确保客户端一次只上传一个以上的文件,那么您应该在其中执行此操作。

您可能的选择取决于您的环境(我们目前还不知道)。您可以使用某种缓存来管理客户端连接,或者您可以使用锁定同步上传,或将服务配置为仅接受X连接,或者...