Постпроцессор Mirth

У меня есть канал, в котором читатель настроен на выполнение SQL-запроса каждые 5 секунд и вставку новой строки в другую таблицу.

Таблица, в которую он будет вставлять данные:

CREATE TABLE timings(
    id SERIAL NOT NULL,
    type TEXT NOT NULL,
    time TIMESTAMP NOT NULL
);

Запрос в постпроцессоре:

INSERT INTO timings (type, time) VALUES (${name}, NOW());

${name} исходит из основного SQL-запроса.

После того, как запрос был выполнен (тот, который сгенерирует сообщение), он выполняет запрос постпроцессора, даже если из запроса ничего не выводится. Есть ли способ запустить сценарий постпроцессора только тогда, когда запрос SQL что-то возвращает?

Кроме того, он использует имя последнего обновления каждые 5 секунд, хотя данные не генерируются. Странно то, что он использует последнее имя обновления (${name}) для всех новых INSERT, что приводит к большому количеству строк, содержащих одни и те же данные (за исключением столбца time). Это нормально?

Я использую PostgreSQL в качестве движка базы данных.


person Paco    schedule 12.10.2015    source источник


Ответы (2)


Использование постпроцессора - это не то место, где я бы делал записи в БД. Простой пункт назначения подойдет. Затем вы можете поставить фильтр для пустого «имени» в источнике.

person jonduncan05    schedule 23.10.2015

Постпроцессор выполняется каждый раз, когда сообщение проходит через все адресаты. Если вы хотите выполнить свой запрос только в том случае, если пункт назначения был успешным, используйте преобразователь ответа. Они расположены в канале задач под трансформатором. Там вы можете использовать responseStatus.

    if (responseStatus == SENT) {
// do your stuff
}
person Philipp    schedule 21.10.2015