2013-03-28 114 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

的容器提交会议(除非听众抛出异常)。