Due stili per i messaggi

Una applicazione JMS può usare due modalità diverse per scambiare messaggi: la point-to-point (PTP) o la publisher/subscriber (Pub/Sub).

Naturalmente é possibile usare entrambe le modalità nella stessa applicazione, basta far riferimento a destinazioni diverse.

Nell'ambito JMS, la destinazione PTP é chiamata Queue (coda) e quella Pub/Sub Topic.

In JMS é possibile usare sia interfacce generiche sia specializzate per gestire i differenti elementi del modello.

Interfacce comuniPTPPub/Sub
ConnectionFactoryQueueConnectionFactoryTopicConnectionFactory
ConnectionQueueConnectionTopicConnection
DestinationQueueTopic
SessionQueueSessionTopicSession
MessageProducerQueueSenderTopicPublisher
MessageConsumerQueueReceiver / QueueBrowserTopicSubscriber

Come consigliano le buone pratiche di progettazione Object-Oriented, bisognerebbe cercare di lavorare con le astrazioni più generiche, e quindi con le interfacce comuni, per permettere una maggiore indipendenza del codice scritto dagli oggetti sottostanti.

Ecco una breve descrizione delle interfacce:

  • ConnectionFactory: un oggetto amministrato usato dal client per creare una connessione;
  • Connection: una connessione a JMS;
  • Destination: un oggetto amministrato che incapsula l'identità della destinazione di un messaggio;
  • Session: un contesto single-threaded usato per mandare e ricevere messaggi;
  • MessageProducer: un oggetto creato da una sessione che viene usato per mandare messaggi a una destinazione;
  • MessageConsumer: un oggetto creato da una sessione che viene usato per ricevere messaggi da una destinazione.
Il flusso di esecuzione segue solitamente uno schema come questo:

La ConnectionFactory crea una Connection, che crea una Session, che crea un Message.

La Session crea anche un MessageProducer che manda un Message a una Destination, e crea pure un MessageConsumer che riceva un Message da una Destination.

Si dice che una applicazione JMS consuma un messaggio quando un cliente manda una ricevuta di accettazione per un messaggio. Si dice che produce un messaggio quando il cliente manda un messaggio ad una destinazione JMS.

Nessun commento:

Posta un commento