Сейчас я делаю проект с некоторыми временными ограничениями. Настройка: веб-служба принимает (крошечные) XML-файлы, и мне нужно быстро их обработать.
Первая и самая наивная идея заключалась в том, чтобы обрабатывать эту обработку в самом диспетчере запросов, но это не масштабировалось и было обречено с самого начала.
Так что теперь я смотрю на переменную загрузку входящих запросов, каждый из которых производит ~ 50 заданий на моей стороне. Технологии, доступные для использования, ограничены из-за правил клиентов. Если это не Sql Server или MS MQ, скорее всего, он не полетит.
Я подумал о том, чтобы пойти по маршруту MS MQ (веб-служба просто отправляет сообщения, затем несколько пользовательских процессов), и небольшая демонстрация концептуальных модулей работала как чудо.
Однако есть одна проблема: приоритет этих заданий может сильно измениться в очереди. Система достаточно критична по времени, поэтому, если мы - по каким-либо причинам - не можем своевременно обрабатывать входящие задания, нам нужно отдать предпочтение последним.
В основном сценарий использования меняется с надежного обмена сообщениями в целом на LIFO при (слишком) большой нагрузке. Старые записи еще нужно обработать, но они потеряли весь свой приоритет.
Есть ли какой-нибудь управляемый способ создать что-то подобное в MS MQ?
Расширение бизнес-стороны в соответствии с просьбой:
Обработка входящей работы связана с некоторыми дорожками, где перемещаются физические товары. Если я не могу обработать сообщения вовремя, все исчезло.
Мне все еще нужны результаты для статистических целей, но мне действительно нужно сосредоточиться на более новых сообщениях.
Подумайте, что я могу влиять на механические вещи и перенаправлять вещи, движущиеся на дорожке - если они еще не прошли точку X.