2013-03-28 120 views
0

我是JMS的新手。我正在嘗試一個示例示例,在該示例中,我在會話中向隊列發送消息,並根據標誌值會話提交。我期望的代碼是,當我的標誌爲false時,消息保留在隊列中,不會被刪除。如果標誌爲真,會話將被提交,並且我收到消息。我無法執行前一部分,即在flg值爲false時將消息保存在隊列中。Java消息服務隊列會話

我正在使用MDPListener和spring框架。以下是我的代碼:

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,消息將從Topic/Queue中刪除。您必須將消息重新輸入隊列,該隊列將再次調用onMessage()並可能遞歸到會話爲止。 – karmanaut

回答

0

的容器提交會議(除非聽衆拋出異常)。