2009-08-17 4 views
2

Existe-t-il de bonnes pratiques pour traiter des messages ou des requêtes/réponses traitant d'énormes quantités de données (MBytes? GBytes?) Via un middleware ou un système EAI, assu- ne traite pas les gros blobs de données?EAI/middleware: Messages importants en ligne ou par référence

  • Transport des données avec le message afin de maintenir la cohérence, mais probablement plusieurs fois copie d'énormes quantités de données entre les systèmes

  • Conserver les données dans un référentiel de stockage ou de données (système de fichiers, base de données ,. ..) et transporter une référence aux données, mais en perdant le couplage étroit entre le message et les données

Quelle est la solution commune à ce problème? Comment cela est-il supporté par EAI ou les produits middleware?

Répondre

0

Dans mon expérience, il est bon de limiter la taille des messages. Dans les environnements que je connais (Websphere MQ, SonicMQ) j'ai trouvé 5-10 Mo une bonne valeur pour la plupart des messages. Dans la plupart des cas, il ne sera pas difficile d'avoir très peu de messages avec des tailles allant jusqu'à 100 Mo -> mais il faudra penser à la consommation de mémoire .... Dans la plupart des API de messagerie, en particulier JMS vous aurez au moins le message en mémoire une fois, ce qui peut vous causer des maux de tête lors du démarrage du traitement parallèle.

Il y a deux choses que nous utilisons comme une solution de contournement:

  • utiliser le Message sequence pattern avec quelques ajouts: la plupart du temps, nous envoyons un déclencheur contenant une référence de tous les numéros de séquence pour assurer l'exhaustivité
  • envoyer un « lien "aux données

Normalement, nous utilisons la première solution lorsque les messages contiennent des données structurées, la seconde est utilisée dans les cas de distribution de médias. Pour la première solution, nous avons également tendance à ne pas utiliser fournit des solutions spécifiques, mais implémenter cette logique dans notre implémentation personnalisée - par conséquent, nous ne sommes pas liés à un système de messagerie spécifique.

0

S'il est pratique d'établir une connexion directe entre le système source et le système de destination, envoyer une référence via un message pour démarrer le transfert fonctionnera mais, comme vous l'avez noté, vous perdez le couplage lâche. Selon le livre Enterprise Integration Patterns, vous pouvez implémenter le code Message sequence pattern. D'après mon expérience avec les systèmes EAI tels que TIBCO. C'est à vous de déterminer comment gérer arbitrairement de grandes quantités de données.

Questions connexes