Попытка умственного сброса здесь: я пытался создать надежный, постоянный стек с MSMQ, не работал
Итак, в более общих чертах:
У меня есть производитель (веб-служба,так что многопоточный, хотя "только один") / потребитель (несколько процессов, столько, сколько нужно) настройки.Ключевыми проблемами являются - Данные должны потребляться / обрабатываться в порядке LIFO (~> стек) - Данные должны храниться / обрабатываться надежным способом (т. Е. Поддерживаются диском, очередью сообщений и т. Д.).Бонусные баллы за сопровождение транзакции.- Вовлечено межпроцессное взаимодействие
Учитывая вышеприведенные вопросы, я изо всех сил пытаюсь найти правильное решение.То, на что я смотрел:
Сделай сам Сам не собирался этого делать, но первоначальное подтверждение концепции этого просто подтвердило, что это сложно (для меня) и помогло мнелучшее понимание множества препятствий.
MSMQ Было бы неплохо и просто, поскольку он легко поддается «надежному», легко настраивается и уже является частью целевой инфраструктуры.,К сожалению, "LIFO" / "Stack" здесь убийца.Это, кажется, невозможно сделать -> Bzzzt.
База данных (SQL Server) Я попытался взглянуть на подход, основанный на БД, но в нем есть много уродливых вещей:
- Мне нужно было бы хранить мои данные в виде большого двоичного объекта (поскольку он не легко поддается хранилищу на основе столбцов)
- Опрос базы данных для работы просто кажется неправильным (не так ли?)
- Блокировка с несколькими потребителями кажется сложной задачей ..
Есть какие-нибудь предложения по технологии, которые я должен оценить?Подход, основанный на базе данных, кажется наиболее «многообещающим» до сих пор, но я до сих пор не нашел хороших примеров / историй успеха подобных примеров использования.
Обновления
- Только для Windows
- На данный момент мне даже не нужно устанавливать межмашинное взаимодействие (т. Е. Производитель / потребитель, вероятно, будет пока находиться на одной машине)
- ключевая часть в вопросе, трудная задача для меня: я не могу потерять работу / сообщение, даже если все процессы прекращаются.БД дала бы мне, что "бесплатно", очереди сообщений могут быть установлены, чтобы быть надежными.Сопоставление / уменьшение, хотя и интересно, не решает основной проблемы: как мне убедиться, что сообщения / задания не потеряны?