Конкурирующий потребитель MSMQ
Может кто-нибудь сказать мне, поддерживает ли MSMQ (используя транзакции) конкурирующих потребителей? По сути, у меня есть несколько потоков, исключающих сообщения из одной очереди. Просто хотел убедиться, что это будет работать, поскольку MSMQ иногда ведет себя не так, как я ожидаю.
1 ответ
Если вы вызываете метод получения от нескольких процессов на одном и том же компьютере в одной и той же очереди, вы не получите одно и то же сообщение более одного раза - если только вы не откатите транзакцию из чтения.
Если вы используете 2008/w7 и получаете на нескольких машинах из одной и той же удаленной очереди в транзакции, вы не должны видеть одно и то же сообщение дважды (снова, если вы не откатитесь).
Если вы используете перечислитель для просмотра сообщений, а затем удаляете интересное (через RemoveCurrent), вы должны ожидать исключения, что сообщение уже было удалено, если другой потребитель его забрал.
Если у вас 2003/XP, вы не можете делать удаленные приемы в транзакции, поэтому все ставки там.