BizTalk 2006 - Скопировать полученный файл в новый каталог - PullRequest
1 голос
/ 26 января 2010

Я хочу иметь возможность скопировать имеющийся у меня файл в формате XML в новую папку на сервере.По сути, я хочу сохранить резервную копию входных файлов в новой папке.

Пока я пытался следовать тому, что было сказано в этом сообщении на форуме - текст ссылки

Сначала я попробовал последний метод, который ничего не делал (переименование файла во время чтения).Поэтому я попробовал один из других вариантов, изменил оркестровку и поместил форму «Отправить» сразу после формы «Получить».То же самое входящее сообщение отправляется на логический порт.Я экспортирую MSI, и я создал порт отправки в консоли администратора, который был установлен, чтобы указать мое местоположение копии.Он копирует файл, но продолжает создавать его каждую секунду.Средство просмотра событий также сообщает о предупреждениях «Файл существует».Я установил «Режим копирования» порта «Перезаписать» и «Создать новый», оба не работают.

Я смотрел в Google, но ничего не помогает - кстати, я поддерживаю BizTalk, но не знаю, как работают конвейеры.Порты работают.Так что любая помощь будет оценена.


спасибо за быстрый ответ.

Как предположил Дэвид, я хочу иметь возможность отслеживать сообщение по проводам до того, как BizTalk выполнит какую-либо обработку с ним.

Я попытался использовать ссылку CodePlex, которую предоставил Бен, и ее точки«Компонент конвейера BizTalk для архивирования сообщений Atomic-Scope», который, похоже, должен будет оплатить мой клиент.Я скачал пробную версию и посмотрю, удастся ли мне.

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

Я бы также не стал полагаться на отслеживание BizTalk в базе данных ящиков сообщений, так как полагаю, что отслеживаемые сообщения нужно будет регулярно удалять.Это правильно или я говорю чепуху?

Однако есть ли способ сделать то, что сделал Atomic-Scope, который может быть дешевле?

** Привет еще раз, я понял этоИз первоначального сообщения Дэвида, как указано, я также создал порт отправки, который просто имеет выражение «Filter», например - BTS.ReceivePortName == ReceivePortName

Спасибо всем **

Ответы [ 2 ]

3 голосов
/ 27 января 2010

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

Первый вопрос: Что нужно отслеживать?

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

Вам нужно отследить сообщение как полученное по проводам, прежде чем BizTalk коснется его

Этот сценарий часто возникает, когда вам нужно иметь возможность доказать , что ваше решение BizTalk не является источником какого-либо искажения или ухудшения качества сообщений в сообщениях.

Есть два общих подхода к этому:

  1. Используйте компонент конвейера, такой как тот, который предлагает Бен Ранчи

    Есть еще один пример конвейерного компонента для архивирования здесь на codebetter.com . Это выглядит хорошо - просто будьте осторожны, если вы используете другие компоненты и место, где вы размещаете этот компонент, чтобы вы все еще следовали надлежащим методикам модели потоков BizTalk. Все конвейеры BizTalk передаются только для потоковой передачи, а это означает, что ваш поток только для чтения один раз, и вся работа над ним происходит с обработкой событий.

    Это хороший подход, но со следующими оговорками:

    • Вы должны быть осторожны с потоковой передачей, используемой в компоненте конвейера
    • Вы фактически не отслеживаете на проводном сообщении - что ваш конвейер на самом деле видит, это сообщение после того, как оно прошло через адаптер BizTalk (например, HTTP-адаптер, Файл и т. Д.)
  2. Положитесь на отслеживание BizTalk из коробки

    BizTalk автоматически сохраняет все сообщения в базе данных окна сообщений, и если вы включите отслеживание BizTalk, вы можете настроить BizTalk на сохранение этих сообщений.

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

Вы можете отслеживать сообщение после того, как оно прошло первоначальный конвейер приема

При таком подходе есть два основных варианта: использовать чистый порт отправки сообщений, подписывающийся на принимающий порт, и использовать порт отправки оркестровки.

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

Подход, который я обычно использую, заключается в создании порта отправки сообщений в консоли администратора BizTalk, который подписывается на ваш порт приема. В этом случае порт отправки будет использовать стандартный файловый адаптер BizTalk с проходным конвейером.

0 голосов
/ 26 января 2010

Думаю, вам стоит взглянуть на компонент конвейера Biztalk Message Archiving. Вы можете найти его на Codeplex (http://www.codeplex.com/btsmsgarchcomp).

Вам нужно будет создать новый конвейер и развернуть его в своей группе biztalk. Затем обновите свой конвейер приема, чтобы заархивировать файл в папку, к которой имеет доступ узел, на котором работает этот узел приема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...