Multithreading

Per ridurre la complessità del sistema JMS richiede che sia supportato l'accesso concorrente solo per quegli oggetti che viene naturale pensare vengano condivisi da client che operano in multithreading.

Gli oggetti JMS che supportano uso concorrente sono: ConnectionFactory, Connection e Destination.

Gli oggetti JMS progettati per essere acceduti sequenzialmente da diversi thread sono: Session, MessageProducer, MessageConsumer.

Per gli oggetti di tipo Session sono definite da JMS alcune specifiche regole per limitarne l'uso in condizioni di concorrenza. Ne parleremo in un post successivo, quando ne sapremo abbastanza di JMS per poterne parlare.

Ci sono due motivi per limitare l'accesso in concorrenza a oggetti Session.
  1. JMS supporta le transazioni via Session, ed é molto difficile implementare transazioni in condizioni di multithreading.
  2. Session supporta il consumo asincrono di messaggi. Implementare la gestione del consumo asincrono di messaggi in ambiente multithreading sarebbe estremamente complesso sia per il server JMS che per il client.
Imporre che la Session non sia multithreading ne semplifica l'uso per il client tipico. Un client più evoluto può ottenere il livello di concorrenza desiderato usando più sessioni.

Nessun commento:

Posta un commento