Перейти к основному содержимому

Процесс интеграции. Создается более одного сообщения при изменении файла в каталоге

Описание проблемы

При работе с файлами может возникнуть ситуация, когда узлы «ФайлИсточник» и «FtpИсточник» реагируют на изменение файла до того, как это изменение завершилось. Обычно такое случается при работе с большими файлами или при медленной записи. Это происходит потому, что узлы «ФайлИсточник» и «FtpИсточник» несколько раз в секунду контролируют указанные им каталоги и/или файлы и генерируют сообщения при изменении даты или размера файла. В результате может быть сгенерировано больше одного сообщения до завершения записи в файл.

Решение

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

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