Сеанс очереди службы обмена сообщениями Java

Я новичок в JMS. Я пробовал пример примера, в котором я отправляю сообщение в очередь в сеансе, и в зависимости от значения флага сеанс фиксируется. Что я ожидаю от кода, так это то, что, когда мой флаг ложный, сообщение остается в очереди и не удаляется. Если флаг установлен, сессия фиксируется, и я получаю сообщение. Я не могу выполнить первую часть, то есть сохранить сообщение в очереди, когда значение flg равно false.

Я использую MDPListener и Spring Framework. Ниже приведен мой код:

public void onMessage(Message message,Session session) {

        System.out.println("New Message arrived part2 .. Passing to Controller");

        Boolean g=false;

        if(g==true)
        {
            System.out.println("Data true..session committed!!");
            try {
                session.commit();
            } catch (JMSException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        else
        {
            try {
                System.out.println("Sesison not commds!!");

                //HERE I WANT THE CODE TO STORE THE MESSAGE IN THE QUEUE, SO THAT NEXT TIME WHEN THE FLAG IS TRUE, MESSAGE GETS DELIVERED! 
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

person Chandeep    schedule 28.03.2013    source источник
comment
Всякий раз, когда сообщение попадает в очередь, у вас будет вызываться onMessage, и сообщение будет удалено из темы/очереди. вам придется либо повторно ввести сообщение в очередь, которая снова вызовет onMessage() и может повторяться до тех пор, пока сеанс не станет истинным.   -  person karmanaut    schedule 28.03.2013


Ответы (2)


Какую версию весны вы используете.

В любом случае проверьте это:

http://forum.springsource.org/showthread.php?21601-JMS-queue-message-viewing-without-removing-it-from-the-queue

Надеюсь, вы найдете это полезным

person vishnu viswanath    schedule 28.03.2013
comment
я использую весеннюю версию 3.1.0. Дело в том, что контейнер не поддерживает метод подтверждения. Я все еще не могу сделать то, что хотел. - person Chandeep; 28.03.2013

Контейнер фиксирует сеанс (если прослушиватель не выдает исключение).

person Gary Russell    schedule 28.03.2013