【问题标题】:Java messaging service queue sessionJava 消息传递服务队列会话
【发布时间】:2013-03-28 22:33:10
【问题描述】:

我是 JMS 的新手。我正在尝试一个示例示例,在该示例中,我将消息发送到会话中的队列,并根据标志值会话被提交。我对代码的期望是,当我的标志为假时,消息将保留在队列中并且不会被删除。如果标志为真,则会话被提交并且我收到消息。我无法执行前一部分,即当 flg 值为 false 时将消息保存在队列中。

我正在使用 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();
            }

【问题讨论】:

  • 当消息进入队列时,您将调用 onMessage 并将消息从主题/队列中删除。您必须将消息重新输入到队列中,该队列将再次调用 onMessage() 并可能递归直到会话为真。

标签: java jms spring-jms


【解决方案1】:

你用的是哪个版本的spring。

不管怎样,看看这个:

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

希望对你有帮助

【讨论】:

  • 我使用的是 spring 3.1.0 版本。关键是容器不支持确认方法..我仍然无法做我想做的事情
【解决方案2】:

容器提交会话(除非监听器抛出异常)。

【讨论】:

    猜你喜欢
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    相关资源
    最近更新 更多