我正在使用事务性msmq队列。在添加新项目之前,我需要检查队列中的项目和尚未提交的项目。
我可以检查队列中的所有项目,但是如何查看已出列但仍未提交的项目?
更新 我有几个从属实例和一个主服务器。每个从站都可以将数据(大文件)上传到主站并从主站下载新数据。
Slaves在msmq队列中的master上注册上传和下载操作,然后启动事务,出列操作,用大文件操作,如果没有其他回滚事务则提交事务。
我必须拒绝所有上传注册,直到我确定文件完全上传为止,因为有几个奴隶不必同时上传一个文件。
答案 0 :(得分:0)
对我来说,这听起来更像是客户/服务结构的架构问题,而不是与MSMQ相关。
如果我在数据库上处理事务,我会直觉地希望所有客户只有在提交后才能看到的任何更改。在您的场景中,MSMQ的行为就像我期望的那样来自DBMS。
总而言之,就我理解你的任务而言,我认为你可能会在错误的地方看 。请考虑在服务中处跟踪上传内容。如果你需要确保客户端不上传多个文件,那么你应该在那里实现它。
您可能的选择取决于您的环境(我们尚不知道)。您可以使用某种缓存来管理客户端连接,也可以使用锁来同步上载,或者将服务配置为仅接受X连接,或者......