Для моего приложения C# .Net MSMQ (с использованием System.Messaging) я хотел бы выполнить вставку в oracle db в качестве транзакции. Очередь, которую я буду читать, - это локальная приватная очередь, на которую будет писать другая служба.Подглядывание в MSMQ перед фиксацией и получением
Я думал об использовании метода Peek для первого захвата и вставки данных. Если при вставке db не возникнут какие-либо исключения или проблемы, я позвоню «Получить», чтобы удалить сообщение из очереди.
Я знаю, что есть функция TransactionScope, но есть ли какие-либо недостатки для выполнения моей операции, как описано выше?
Спасибо за информацию, я изучаю ее реализацию. Однако для информационных целей, если у меня есть полный контроль над локальной очередью и будет реализован только один однопоточный приемник, чтобы никто другой не смог захватить мое сообщение, пока я делаю вкладку db, вы думаете что этот метод, описанный выше, будет по-прежнему предпочтительнее? –
Конечно, вы можете реализовать его с помощью peek, а затем получить после вставки db, но если вы используете мой предложенный шаблон, у вас будет более долговечное решение, которое можно было бы легко использовать в других сценариях, а также быть более правильным с архитектурной точки зрения. –