Nel API doc JMS, ha detto:La coda JMS riceve un messaggio?
public Message receive() throws JMSException
riceve il messaggio successivo prodotta per questo messaggio consumatore. Questa chiamata blocca a tempo indeterminato fino a quando non viene prodotto un messaggio o fino a quando questo messaggio non viene chiuso.
Se questa ricezione viene eseguita all'interno di una transazione, il consumatore conserva il messaggio fino a quando la transazione non viene eseguita.
Qui ho tre domande: 1. nel codice, è necessario il ciclo while per ricevere il messaggio? come:
while(true){
Message msg = queue.receive();
....
}
qual è l'impostazione delle transazioni? come effettuare una transazione? in questo modo:
boolean transacted = false; session = connection.createQueueSession(transacted, Session.AUTO_ACKNOWLEDGE);
receiveNoWait() ha il supporto delle transazioni? come usarlo ?
Grazie
se si utilizza la transazione, ridimensionerà le prestazioni? – user595234
Le transazioni impongono un sovraccarico sul server JMS perché non può rilasciare i messaggi finché non si esegue il commit. – gregwhitaker
Puoi anche dare un'occhiata a quanto segue per alcuni consigli sulle prestazioni su JMS con Java: http://www.precisejava.com/javaperf/j2ee/JMS.htm – gregwhitaker