2013-03-28 3 views
0

JMS를 처음 사용합니다. 나는 세션에서 대기열에 메시지를 보내고 플래그 값에 따라 세션이 커밋되는 샘플 예제를 시도하고있었습니다. 이 코드에서 기대하는 것은 플래그가 false 일 때 메시지가 큐에 남아 있고 삭제되지 않는다는 것입니다. flag가 true이면 세션이 커밋되고 메시지가 표시됩니다. 전 부분을 수행 할 수 없습니다. 즉, flg 값이 false 일 때 대기열에 메시지를 저장합니다.Java 메시징 서비스 대기열 세션

MDPListener 및 스프링 프레임 워크를 사용하고 있습니다. 다음은 내 코드입니다.

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(); 
      } 
+0

메시지가 대기열에 도달 할 때마다 onMessage가 호출되고 메시지는 주제/대기열에서 삭제됩니다. ou는 다시 onMessage()를 호출하고 세션이 true가 될 때까지 반복 될 수있는 대기열에 메시지의 이름을 변경해야합니다. – karmanaut

답변

2

어떤 스프링 버전을 사용하고 있습니까?

어쨌든이 체크 아웃 :

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

당신이 (리스너에서 예외가 발생하지 않는 한) 것이 도움이

+0

좋은 참조. – karmanaut

+0

그게 정말 도움이 !! 고마워요 :) – Chandeep

+0

나는 봄 3.1.0 버전을 사용하고 있습니다. 요점은 컨테이너가 인정 방법을 지원하지 않는다는 것입니다. 나는 아직도하고 싶은 일을 할 수 없습니다. – Chandeep

0

컨테이너가 세션을 저지른 찾아 낸다.