4

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

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

更新: 我有几个从属实例和一个主服务器。每个从站可以上传数据(大文件)到主站并从主站下载新数据。

Slaves 在 msmq 队列中注册 master 上的上传和下载操作,然后启动事务,出队操作,对大文件进行操作,如果可以,则提交事务,否则回滚事务。

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

4

1 回答 1

0

对我来说,这听起来更像是您的客户端/服务结构的架构问题,而不是 MSMQ 相关的问题。

如果我在数据库上使用事务,我会直观地期望所有客户端只有在提交后才能看到任何更改。在您的场景中,MSMQ 的行为就像我对 DBMS 的期望一样。

总而言之,据我了解您的任务,我认为您可能看错了位置考虑在服务中的某处跟踪上传。如果您需要确保客户端一次不会上传多个文件,您应该在其中实现这一点。

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

于 2012-04-13T11:06:35.927 回答