Dal javadoc per Session afferma:utilizzando una sessione JMS da diversi thread
Un oggetto Session è un contesto thread singolo per la produzione e il consumo di messaggi.
così ho capito che non si dovrebbe usare un oggetto Session da due diversi thread allo stesso tempo. Quello su cui non sono chiaro è se si potesse usare l'oggetto Session (o child come una coda) da un thread diverso da quello creato.
Nel caso in cui sto lavorando, sto considerando di mettere i miei oggetti Session in un pool di sessioni disponibili che qualsiasi thread potrebbe prendere in prestito da, usare e tornare al pool quando è finito con esso.
È questo kosher?
(Usando ActiveMQ A proposito, se che gli impatti della risposta a tutti.)
L'ultimo post in questa pagina non si capiscono anche questa interpretazione dei vincoli di filettatura: http://stackoverflow.com/questions/1669746/jms-acknowledge-asynchronous-message –
sessione deve essere limitato ad un singolo thread che controlli (per bloccare scrittura/lettura) o un singolo thread assegnato da JMS per l'ascolto asincrono. => 1) Per la lettura/scrittura simultanea, devono essere utilizzate sessioni separate. 2) Per il consumo parallelo, è necessario utilizzare più sessioni. Vedi anche la grande spiegazione su http://onjava.com/pub/a/onjava/excerpt/jms_ch2/index.html?page=4#78858 – ron
Nota che, come dice T.Rob, il thread singolo può cambiare nel tempo , sii certo di imporre una relazione di happen-before. – ron