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

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

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

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

Решение

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

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