7

有人能告诉我 MSMQ(使用事务)是否支持竞争消费者吗?基本上,我有多个线程将消息从单个队列中出列。只是想确保这会起作用,因为 MSMQ 有时的行为与我预期的不同。

4

1 回答 1

6

如果您从同一队列上同一台机器上的多个进程调用 Receive,您将不会多次收到相同的消息——除非您从读取回滚事务。

如果您使用的是 2008/w7 并且在多台机器上从同一事务中的同一个远程队列接收,您不应该看到两次相同的消息(再次,除非您回滚)。

如果您使用枚举器来查看消息,然后删除一个有趣的消息(通过 RemoveCurrent),您应该会看到一个异常,即如果另一个消费者已经接收到该消息,则该消息已被删除。

如果您使用的是 2003/XP,则无法在交易中进行远程接收,因此所有赌注都在那里。

于 2009-10-13T10:13:25.643 回答