Конкурирующий потребитель MSMQ

Может кто-нибудь сказать мне, поддерживает ли MSMQ (используя транзакции) конкурирующих потребителей? По сути, у меня есть несколько потоков, исключающих сообщения из одной очереди. Просто хотел убедиться, что это будет работать, поскольку MSMQ иногда ведет себя не так, как я ожидаю.

1 ответ

Решение

Если вы вызываете метод получения от нескольких процессов на одном и том же компьютере в одной и той же очереди, вы не получите одно и то же сообщение более одного раза - если только вы не откатите транзакцию из чтения.

Если вы используете 2008/w7 и получаете на нескольких машинах из одной и той же удаленной очереди в транзакции, вы не должны видеть одно и то же сообщение дважды (снова, если вы не откатитесь).

Если вы используете перечислитель для просмотра сообщений, а затем удаляете интересное (через RemoveCurrent), вы должны ожидать исключения, что сообщение уже было удалено, если другой потребитель его забрал.

Если у вас 2003/XP, вы не можете делать удаленные приемы в транзакции, поэтому все ставки там.

Другие вопросы по тегам