В чем разница между автоматическим режимом транзакции и режимом фиксации в вычислительном узле WMB 8.0?
Мы разработали поток сообщений с вычислительным узлом, который вставляет записи в таблицы БД Oracle. Поток выглядит следующим образом:
MQInputNode (терминал вывода) --- > Вычислительный узел MQInputNode (терминал перехвата) --- > Поток обработки ошибок
Свойства, которые мы установили в этом потоке, приведены ниже.
- Входной узел MQ имеет свойство транзакции как «Да».
- Свойство транзакции вычислительного узла как «Автоматическое»
- Терминал перехвата MQ Input Node подключен к уже разработанному подпотоку обработки ошибок.
В вычислительном узле мы просто анализируем сообщение и вставляем записи в таблицы. Рассмотрим сценарий, в котором сообщение имеет 2 записи. Первая запись действительна, а вторая запись недействительна.
Когда мы устанавливаем свойство транзакции как «Автоматически», первая запись вставляется и фиксируется должным образом, даже если вставка второй записи вызывает исключение. Мы считаем, что это успешный поток, потому что мы поймали это исключение и правильно обработали его с помощью терминала MQ Input catch.
Но когда мы устанавливаем свойство транзакции как «Зафиксировать», даже первая запись не вставляется. Разработчики WMB, которые работают со мной, сказали, что «Commit» — это свойство уровня узла, поэтому, когда вторая запись вставляется, возникает исключение, а первая запись возвращается из БД.
Я прошел через информационный центр WMB. Нигде не упоминается, что Automatic is Commit находится на уровне узла, и если какое-либо исключение в этом узле приведет к откату вставленных записей.
Просьба уточнить.