O documento descreve como configurar e usar o adaptador SFTP do MuleESB para transferir arquivos entre organizações. Ele discute a configuração básica do ponto de extremidade SFTP e características avançadas como o diretório temporário e tempo de espera de arquivo. O autor conclui que o MuleESB fornece recursos úteis para lidar com desafios comuns ao integrar com servidores SFTP.
1. Explorando MuleESB SFTP Adapter
Infelizmente eu ainda correr em muitas situações em que SFTP é necessária, a fim de trocar dados entre as
organizações. Estas organizações podem ser grandes bancos, empresas de folha de pagamento e até mesmo alguns
fornecedores de SaaS bem conhecidos. Eu pensei que seria um exercício interessante para explorar o que Mule tem
para oferecer nesta área particular.
Configuração simples
O cenário é um fluxo simples que vai nos receber um arquivo, ou mensagem, de um endpoint receber e directamente
enviando-o para um ponto de extremidade de envio sem qualquer tipo de fluxo de trabalho, orquestração ou
transformação.
Arquivo
gurar o nosso ponto final SFTP e podemos fazê-lo clicando sobre ele.
Caminho, Usuário e Senha
Nota: se você sua senha contém um "caráter especial" pode ser necessário para fornecer o equivalente HTML / XML.
Inicialmente, quando eu corri minha aplicação com um carácter especial (%) em minha senha eu tenho o seguinte erro:
INFO 2013-12-25 11:06:54,128 [main]org.mule.module.launcher.application.DefaultMuleApplication: App
‘helloworld’ never started, nothing to dispose of
Exception in thread “main” org.mule.module.launcher.DeploymentInitException: IllegalArgumentException:
URLDecoder: Illegal hex characters in escape (%) pattern – For input string: “@f”
atorg.mule.module.launcher.application.DefaultMuleApplication.init(DefaultMuleApplication.java:219)
atorg.mule.module.launcher.application.ApplicationWrapper.init(ApplicationWrapper.java:64)
atorg.mule.module.launcher.DefaultMuleDeployer.deploy(DefaultMuleDeployer.java:47)
atorg.mule.tooling.server.application.ApplicationDeployer.main(ApplicationDeployer.java:127)
A solução foi descobrir o valor codificado de '%' que passa a ser '% 25'. Depois de eu ter o valor original com
este valor codificado foi bom velejar.
2. Existem algumas outras abas que estão disponíveis, que serão posteriormente discutidos neste post, mas no
contexto de obter um arquivo simples para se mover, eles não são relevantes como parte deste cenário atual.
Você pode estar se perguntando se é isso, então como posso especificar uma máscara de arquivo? Eu tive a
mesma pergunta e depois de algumas escavações eu descobri que este tipo de informação é especificado na
guia XML de configuração subjacente para esse fluxo.
presente. O que precisamos fazer agora é adicionar a seguinte declaração que vai permitir-nos para pegar ou
arquivos TXT ou arquivos xml:
<File: padrão de ficheiros-wildcard-filter = ". *. Txt, * xml" />
§ Com a nossa configuração SFTP completa podemos agora concentrar-se na Endpoint Arquivo. Arraste esta
forma para a nossa tela se você não tiver feito isso.
padrão de saída que vai ditar o nome do arquivo. Neste caso, queremos manter o nome do arquivo original que
foi recebido através de SFTP por isso vamos usar a seguinte expressão para activar
esta:#[header:originalFilename].
Com a sua aplicação configurada agora podemos escolher “Run as Mule Application”.
3. no servidor de origem SFTP usando um FTP GUI.
Isso conclui o exemplo muito simples de como usar o SFTP Endpoint em uma capacidade receptor.
Configuração avançada
Como mencionei anteriormente no post existem algumas características adicionais que eu notei que são interessantes e
queria explorar esses recursos um pouco mais.
Se navegar para a aba "Avançado" do ponto de extremidade SFTP vamos descobrir uma configuração de par que eu
não tenha visto em outras plataformas que eu acho que seria útil.
A primeira definição é "Age Arquivo", que permite que um desenvolvedor para especificar um período de tempo que
Mule vai esperar antes de mover o arquivo. Desde S / FTP não suporta o bloqueio de arquivos, plataformas de
middleware pode ser executado em condições de corrida, onde Middleware pode recuperar um arquivo antes de todo o
conteúdo ter sido escrito para o disco no servidor S / FTP. Para arquivos menores este não é muito de uma
preocupação, mas para arquivos maiores que muito é uma preocupação. Em algumas outras plataformas pode ser
necessário escrever um script que irá acrescentar uma extensão indicando que o arquivo foi escrito completamente e
pode ser processado pelo middleware.
Se houver mais de certeza em torno do tamanho de um arquivo (que é do mesmo tamanho todos os dias) você pode
usar o "Tamanho do check Tempo de Espera". No entanto, a idéia é a mesma, durante um ciclo de polling, se o
arquivo não cumprir este requisito não será movido até que cumpre os critérios.
4. Mover-se para a próxima guia de interesse é a guia "Arquivo". A primeira propriedade que queremos é olhar para o
"Diretório de Arquivo".
Quando um valor é definido no "Directório de Arquivo", Mule irá depositar automaticamente uma cópia do arquivo de
origem para a pasta de destino e a pasta de arquivo, conforme ilustrado abaixo:
5. O último recurso que eu quero discutir é o "Diretório Temp" propriedade. Esta propriedade, quando definido, será
utilizado no servidor de SFTP. Em nosso contexto (receber um arquivo) esta pasta irá ser criada automaticamente se
ele não existir, como ilustrado na imagem a seguir.
O que vai acontecer é que o nosso arquivo será movido para essa pasta no servidor SFTP antes Mule estaremos
copiando este arquivo via Mule. Do ponto de vista Enviar esta função é sem dúvida ainda mais valioso. Ao enviar,
Mule irá mover o arquivo para a pasta temp primeiro a garantir que ele tenha sido entregue na sua totalidade. Uma vez
que tenha sido movido completamente ele será movido da pasta Temp para a pasta de destino que é uma operação
muito mais seguro. Isto também assegura que um processo demorado (tal como um ERP) não tentará processar o
ficheiro enquanto está a ser escrito.
Outra característica que podemos tirar mais proveito do que se usar diretórios temporários está definindo o "Use Temp
Arquivo Timestamp sufixo" para garantir que temos os nomes de arquivo originais enquanto os arquivos que estão em
trânsito. Isto evita colisões com arquivos que já falharam e foram posteriormente tentada novamente, mas o arquivo
original já existe na pasta Temp.
Conclusão
Tenho vindo a utilizar S / Adaptadores de FTP (conectores) para muito poucos anos agora em outras
plataformas. Estou impressionado com as características que MuleSoft tem prestado fora da caixa. É muito
evidente que eles têm realmente pensou por um monte de os desafios que são inerentes quando a interface com
os servidores S / FTP.
A única coisa que gostaria de considerar a modificação está fazendo a configuração de máscara de arquivo
mais visíveis, como o faz parecer uma definição fundamental que deve estar em uma GUI.