Pergunta

Existem boas práticas para o processamento de mensagens ou solicitações / respostas que lidam com grandes quantidades de dados (MBytes? GBytes?) Através de um middleware ou um sistema de EAI, assunming que os transportes de middleware, mas não processa as enormes bolhas de dados?

  • Transporte os dados com a mensagem, a fim de manter a coerência, mas provavelmente copiar várias vezes enormes quantidades de dados entre sistemas

  • Mantenha os dados em um armazenamento de dados ou repositório (sistema de arquivos, banco de dados, ...) e transportar uma referência aos dados, no entanto perder a estreita ligação entre a mensagem e os dados

Qual é a solução comum para este problema? Como isso é apoiado por EAI ou produtos de middleware?

Foi útil?

Solução

Em minha experiência é bom para limitar o tamanho das mensagens. Nos ambientes eu sei (Websphere MQ, SonicMQ) Eu encontrei 5-10 MB um valor bom para a maioria das mensagens. Em muitos casos isso não vai ferir a ter muito poucas mensagens com tamanhos de até 100 MB -> mas lá você vai ter que pensar sobre o consumo de memória, .... Na maioria dos APIs de mensagens, especialmente JMS você terá pelo menos a mensagem completamente na memória de um tempo, o que pode causar algumas dores de cabeça quando se inicia o processamento paralelo.

Há duas coisas que usamos como uma solução alternativa:

  • usar o mensagem padrão seqüência com algumas adições: principalmente nós enviar um gatilho contendo uma referência de todos os números de seqüência para garantir a integralidade
  • enviar um "link" para os dados

Normalmente, utilizar a primeira solução, sempre que as mensagens contêm dados estruturados, o segundo é utilizada em casos de distribuio de fluidos.

Para a primeira solução nós também não tendem a usar fornece soluções específicas, mas implementar essa lógica na nossa implementação personalizada - mesmos que não estão vinculados a um sistema de mensagens específica

.

Outras dicas

Se é prático para fazer uma conexão direta entre o sistema de origem e destino, em seguida, enviar apenas uma referência através de uma mensagem para iniciar a transferência vai funcionar, mas, como você observou que você perde o acoplamento.

De acordo com o livro Integration Patterns Empresa você poderia implementar o mensagem padrão seqüência .

Na minha experiência com sistemas de EAI como TIBCO. É muito bonito até você para descobrir o nosso como lidar arbitrariamente grandes quantidades de dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top