В чем разница между автоматическим режимом транзакции и режимом фиксации в вычислительном узле WMB 8.0?

В чем разница между автоматическим режимом транзакции и режимом фиксации в вычислительном узле WMB 8.0?

Мы разработали поток сообщений с вычислительным узлом, который вставляет записи в таблицы БД Oracle. Поток выглядит следующим образом:
MQInputNode (терминал вывода) --- > Вычислительный узел MQInputNode (терминал перехвата) --- > Поток обработки ошибок

Свойства, которые мы установили в этом потоке, приведены ниже.

  1. Входной узел MQ имеет свойство транзакции как «Да».
  2. Свойство транзакции вычислительного узла как «Автоматическое»
  3. Терминал перехвата MQ Input Node подключен к уже разработанному подпотоку обработки ошибок.

В вычислительном узле мы просто анализируем сообщение и вставляем записи в таблицы. Рассмотрим сценарий, в котором сообщение имеет 2 записи. Первая запись действительна, а вторая запись недействительна.

Когда мы устанавливаем свойство транзакции как «Автоматически», первая запись вставляется и фиксируется должным образом, даже если вставка второй записи вызывает исключение. Мы считаем, что это успешный поток, потому что мы поймали это исключение и правильно обработали его с помощью терминала MQ Input catch.

Но когда мы устанавливаем свойство транзакции как «Зафиксировать», даже первая запись не вставляется. Разработчики WMB, которые работают со мной, сказали, что «Commit» — это свойство уровня узла, поэтому, когда вторая запись вставляется, возникает исключение, а первая запись возвращается из БД.

Я прошел через информационный центр WMB. Нигде не упоминается, что Automatic is Commit находится на уровне узла, и если какое-либо исключение в этом узле приведет к откату вставленных записей.

Просьба уточнить.


person Pushparaj S    schedule 28.07.2014    source источник


Ответы (2)


Параметр управляет как транзакцией, так и областью транзакции.

Если установлено значение «Автоматически», то транзакционность наследуется от входного узла. В этом случае для входного узла установлено значение «Да», поэтому вы получаете транзакцию с областью действия транзакции, охватывающей весь вызов потока сообщений.

Если установлено значение «зафиксировать», областью транзакции является сам вычислительный узел, и работа будет зафиксирована, когда обработка выйдет из вычислительного узла (под выходом в этом случае я подразумеваю завершение вычислительного узла, а не выход через распространение на другой узел).

person Dave    schedule 28.07.2014

Автоматически: вы потеряете данные, вставленные в базу данных, если ваш tnx выйдет из строя после операции с базой данных (откат).

Commit: данные db будут зафиксированы, даже если в вашем tnx произошел сбой.

person Girish    schedule 18.11.2015
comment
Это не совсем верно - автоматический унаследует режим транзакции от входного узла потока. - person simonalexander2005; 28.09.2017