w API doc JMS, to powiedział:Kolejka JMS otrzymuje wiadomość?
public Message receive() throws JMSException
Odbiera następną wiadomość wyprodukowany dla tej wiadomości konsumenta. To wywołanie blokuje się na czas nieokreślony , dopóki nie zostanie wygenerowany komunikat lub dopóki ten konsument wiadomości nie zostanie zamknięty.
Jeśli otrzymanie zostanie wykonane w ramach transakcji, konsument zachowuje komunikat do momentu zatwierdzenia transakcji.
Tutaj mam trzy pytania: 1. Czy w kodzie potrzebujemy pętli while, aby otrzymać wiadomość? jak:
while(true){
Message msg = queue.receive();
....
}
co jest ustawieniem transakcja? jak dokonać transakcji? tak:
boolean transacted = false; session = connection.createQueueSession(transacted, Session.AUTO_ACKNOWLEDGE);
receiveNoWait() ma wsparcie transakcji? Jak tego użyć ?
Dzięki
jeśli użyjesz transakcji, zmniejszy to wydajność? – user595234
Transakcje nakładają obciążenie na serwerze JMS, ponieważ nie może on zwolnić wiadomości do momentu zatwierdzenia. – gregwhitaker
Możesz również zapoznać się z następującymi zaleceniami dotyczącymi wydajności JMS w Java: http://www.precisejava.com/javaperf/j2ee/JMS.htm – gregwhitaker