Я создал службу WCF и использую привязку netMsmqBinding.
Это простой сервис, который передает метод Dto моему сервису и не ожидает ответа. Сообщение помещается в MSMQ и однажды вставлено в базу данных.
Каков наилучший способ убедиться, что данные не теряются.
Я пробовал два следующих метода:
-
Выбросить исключение
Это помещает сообщение в очередь с мертвой буквой для ручного прочтения. Я могу обработать это, когда начинается strvice
-
установите значение receiveRetryCount = "3" для привязки
После 3 попыток - которые происходят мгновенно, это, похоже, оставляет сообщение в очереди, но вызывает ошибку. Перезапуск службы повторяет этот процесс.
В идеале я хотел бы сделать следующее:
Попробуйте обработать сообщение
- Если это не удается, подождите 5 минут и повторите попытку.
- Если этот процесс выходит из строя 3 раза, переместите сообщение в очередь с мертвой буквой.
- Перезапуск службы вытолкнет все сообщения из очереди мертвой буквы обратно в очередь, чтобы она могла быть обработана.
Могу ли я достичь этого? Если да, то как? Можете ли вы указать мне на какие-либо хорошие статьи о том, как лучше всего использовать WCF и MSMQ для моих данных сцен.
Любая помощь будет высоко оценена. Спасибо!
Дополнительная информация
Я использую MSMQ 3.0 в Windows XP и Windows Server 2003. К сожалению, я не могу использовать встроенную поддержку ядовитых сообщений, ориентированную на MSMQ 4.0 и Vista/2008.