ITLAB – Laboratorio IT

SOA (Service Oriented Architecture), Web 2.0, Open Source e Java.

  • Feed

    Feed ITLAB

  • Chi sono

    Mi chiamo Andrea Gumina. Sono laureato in Scienze dell'Informazione e lavoro per un'azienda di consulenza IT. Da qualche anno mi occupo di integrazione di sistemi, di SOA (Service Oriented Architecture) da poco meno di tre.

  • Bookmarks

  • Licenza

  • Statistiche

JMS (Java Message Service): affidabilità

Pubblicato da Andrea Gumina su 25 Ottobre 2007

Aggiungo altre considerazioni al discorso su JMS iniziato qualche post fa.

—-><—-

JMS (Java Message System) è un protocollo di tipo MQ (Message Queue) spesso impiegato per conseguire l’asincronia, l’affidabilità, l’unica consegna e l’ordine sulla consegna.

JMS prevede la presenza di un provider interposto tra il produttore ed il consumatore del messaggio; in tal modo si crea un “percorso”, che il messaggio deve percorrere prima di essere consumato, in cui si possono distinguere il tratto produttore-provider ed il tratto provider-consumatore.

In questo post vorrei trattare più nel dettaglio il livello di affidabilità che JMS è in grado di offrire.

L’affidabilità maggiore che si possa conseguire con JMS si ha quando:

  1. Si usano messaggi persistenti.

  2. Non si usano code temporanee.

  3. Si impongono sottoscrizioni durevoli per i topic.

  4. Si conferma esplicitamente un messaggio solo dopo averlo consumato (CLIENT_ACKNOWLEDGE).

  5. Le sessioni sono dichiarate transazionali.

Così facendo però, si ottiene la consegna garantita, l’affidabilità sul tratto provider-consumatore.

La specifica non prevede nulla circa il tratto produttore-provider: se il provider cessa di funzionare o accade qualcosa sul tratto in questione e non si prevede alcuna strategia di recupero il messaggio andrà perso; allo stesso modo se non si prevedono specifiche implementazioni non è possibile propagare la conferma di ricezione del messaggio sino al suo produttore.

Alcune implementazioni JMS risolvono il primo problema proponendo soluzioni eleganti, trasparenti al programmatore, ma “proprietarie” e che richiedono configurazione (essenzialmente rendendo persistente il messaggio ed affidando ad un “thread” separato il suo invio).

—-><—-

Hai trovato questo post interessante? Sottoscrivi il feed completo e partecipa alla discussione

Lascia un commento

XHTML: Puoi usare questi tag: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>