Представьте 3 системных компонента: 1. Внешняя электронная коммерция для обработки транзакций по кредитным картам 2. Локальная база данных для хранения результатов обработки 3. Локальный пользовательский интерфейс (или услуга выигрыша) для выполнения обработки платежей документ о заказе клиентаАрхитектура для надежной обработки платежей
Внешняя веб-служба, очевидно, не является транзакционной, поэтому, как гарантировать: 1. результаты, которые в конечном итоге сохраняются в базе данных при получении от веб-службы, даже если база данных недоступна в данный момент (проблема с сетью , тайм-аут db) 2. Запретить клиентам обработку заказа клиента во время платежа, инициированного другим клиентом, но результаты не соответствуют (и ожидание в какой-либо очереди восстановления)
Цель состоит в том, чтобы обрабатывать компоненты, не имеющие транзакционной системы, и гарантировать, что транзакция не будет повторяться другим процессом в случае отказа.
(пожалуйста, смотрите на него в контексте пост распродажи обработка платежей, где несколько операторов могут попытаться ручной обработкой платежей, а не веб-контроля приложения)
Это более или менее то, как я это сделал, используя MSMQ, просто хотел увидеть, как другие решат проблему. Я тоже проверил NServiceBus, что дало мне дополнительный обзор по этому вопросу. Благодарю. – Tomek