Я новичок в этом, пожалуйста, помогите мне. Я хочу создать систему с веб-сайтом и сервисом. Веб-сайт принимает запрос пользователя и помещает задание в очередь. Служба получает задание из очереди и обрабатывает его. Но как иметь дело со сценарием, который служба ломает после того, как она уже выбрала задание из очереди? Есть ли механизм для того, чтобы узнать, что система разбилась и вернула задание в очередь. Заранее спасибо!что произойдет, если служба уже выполнит задание из очереди, а затем взорвется
-1
A
ответ
0
При использовании MSMQ сообщения по умолчанию завернуты в транзакцию при вводе в очереди и при их обработке (через обработчик).
Если сообщение было на полпути через обработчик, и мощность была отключена сервером, транзакция завершится неудачно, и сообщение будет оставлено в верхней части очереди. Когда сервер вернется, верхнее сообщение будет снято с очереди и обработано (сообщение, которое обрабатывалось во время предыдущего сбоя).
Я не знаком с 'nservicebus', но обычно, когда вы удаляете что-то из надежной очереди сообщений, он скрыт/недоступен для деактивации во время обработки задания. Когда задание завершается, сообщение может быть окончательно удалено из очереди. После указанного тайм-аута задание восстанавливается и снова доступно для удаления, если оно не было помечено как сделанное, заставив повторное выполнение задания, если произошла сбой обрабатываемой вещи. – Bas