Ограничьте передачу файлов MQFTE одним файлом за раз

У меня есть настройка MQFTE, в которой мы получаем файлы от внешнего поставщика. Файлы сбрасываются на сервер в DMZ, и у нас есть агент MQFTE, который выбирает файлы с этого сервера и передает их на наш сервер.

Мы получаем файлы «наборами», т.е. каждый входящий файл имеет связанный xml-файл, который описывает и содержит метаданные о файле. Например. applicationform.pdf и applicationform.xml. Окончательное приложение сохраняет файл PDF на основе данных/метаданных в XML.

Поскольку триггер срабатывает для каждого входящего файла, мы проверяем в триггере, получили ли мы файл XML и файл содержимого (например, PDF).

Однако я не думаю, что это лучший подход, так как он добавляет много кода бронирования для проверки проблем параллелизма, когда оба файла поступают одновременно. Есть ли способ:

  1. Ограничить триггер, чтобы он срабатывал только при получении обоих файлов? В моем исследовании это невозможно.
  2. Настроить агент на сервере так, чтобы он получал только один файл за раз? Глядя на документацию, кажется, что это может быть достигнуто, но только для агента, инициирующего передачу, а не для агента, получающего передачу? Документация намекает на параметр monitorMaxResourcesInPoll и -bs, но я думаю, что это будет на исходном агенте. Поскольку агент совместно используется несколькими системами, это также повлияет на них.

Кроме того, я был бы признателен за любые советы и предложения или даже альтернативные решения, которые наилучшим образом соответствуют требованиям.


person MojoJojo    schedule 27.03.2015    source источник


Ответы (1)


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

В ответ на 2) I вы можете установить maxDestinationTransfers на 1 на целевом агенте, чтобы ограничить его получением одного перевода за раз. Если передача содержит несколько файлов, они будут переданы последовательно, поэтому пункт назначения действительно получает только 1 файл за раз. monitorMaxResourcesInPoll просто ограничивает агент мониторинга количеством файлов, которые он анализирует в исходном каталоге за один опрос монитора. Вы можете установить для него значение 1, но если вы хотите передать файл PDF и файл XML в одной и той же передаче, вам нужно установить значение 2. Вероятно, это не тот параметр, который вы хотите использовать.

person Matthew Whitehead    schedule 19.06.2015