Domanda

Ci sono buone pratiche per l'elaborazione di messaggi o richieste / risposte che si occupano di enormi quantità di dati (MByte? GByte?) Tramite un middleware o un sistema di EAI, assunming che i trasporti middleware, ma non elabora le enormi blob di dati?

  • trasportare i dati con il messaggio al fine di mantenere la coerenza, ma probabilmente più volte copiare grandi quantità di dati tra i sistemi

  • mantenere i dati in un negozio o di dati repository (file system, database, ...) e il trasporto di un riferimento ai dati, tuttavia perdere la stretta accoppiamento tra il messaggio e i dati

Qual è la soluzione comune a questo problema? Come è questo supportato da EAI o middleware prodotti?

È stato utile?

Soluzione

Nella mia esperienza è bene limitare la dimensione dei messaggi. Negli ambienti che conosco (WebSphere MQ, SonicMQ) ho trovato 5-10 MB un buon valore per la maggior parte dei messaggi. In molti casi non sarà male avere pochissimi messaggi con dimensioni fino a 100 MB -> ma ci si dovrà pensare a consumo di memoria, .... Nella maggior parte delle API di messaggistica, in particolare JMS avrete almeno avere completamente il messaggio in memoria una sola volta, che può causare qualche mal di testa quando si inizia l'elaborazione parallela.

Ci sono due cose che usiamo come una soluzione:

  • modello di sequenza del messaggio con alcune aggiunte: per lo più inviamo un trigger contenente un riferimento di tutti i numeri di sequenza per garantire la completezza
  • inviare un "link" con i dati

Normalmente si usa la prima soluzione quando i messaggi contengono dati strutturati, il secondo è utilizzato nei casi di distribuzione dei media.

Per la prima soluzione di noi tendono anche a non utilizzare fornisce soluzioni specifiche, ma implementare questa logica nella nostra implementazione personalizzata -. Perciò noi non siamo legati ad un sistema di messaggistica specifica

Altri suggerimenti

Se è pratico di stabilire una connessione diretta tra il sistema sorgente e la destinazione quindi l'invio solo un riferimento attraverso un messaggio per avviare il trasferimento funzionerà, ma, come avrete notato si perde il loose coupling.

Secondo i modelli di integrazione libro Enterprise è possibile implementare i href="http://www.eaipatterns.com/MessageSequence.html" messaggio modello sequenza .

Nella mia esperienza con i sistemi di EAI quali TIBCO. E 'più o meno a voi per capire il nostro come gestire arbitrariamente grandi quantità di dati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top