Explorando mule esb sftp adapter

5

Click here to load reader

Transcript of Explorando mule esb sftp adapter

Page 1: Explorando mule esb sftp adapter

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.

Page 2: Explorando mule esb sftp adapter

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”.

Page 3: Explorando mule esb sftp adapter

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.

Page 4: Explorando mule esb sftp adapter

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:

Page 5: Explorando mule esb sftp adapter

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.