有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java activeMQ接收器倒带丢失?

我有一个很好用的队列生成器。 我有一个工作正常的队列接收器

这个问题就是这个。如果我启动生产者,它开始向队列中注入数据,一段时间后我启动接收器,它似乎只会获取在我启动接收器后出现的数据,因此在接收器启动之前放置在队列中的项目永远不会被推送

有没有一种方法可以告诉接收者从队列的开头开始,而不考虑接收者的开始时间?我已经回顾了receiver类的方法,但似乎并没有看到任何建议这样做的方法

非常感谢你的帮助

要求提供一些额外的信息

The receiver...

      int x = 0 ;
        while(x < 1000 ) {
            // receive a message
            TextMessage message = (TextMessage) queueReceiver.receive();

            // print the message
            System.out.println("received message : " + x + " " +message.getJMSMessageID());

            x++ ;
        }
        // close the queue connection
        queueConn.close();

生产者代码要复杂得多,发布起来并不容易,因为它包含在多个类中,但下面是队列创建部分:

public class qDestinations {

public static Queue createDest(Session session, String destName) {


    try {
        return session.createQueue(destName);
    } catch (JMSException e) {
        System.out.println(e.getMessage());
        return null;
    }

}

我希望这有助于解决这个问题

}


共 (1) 个答案

  1. # 1 楼答案

    这是一个奇怪的答案,但我在队列中的每条消息上都设置了TTL,根据AMQ管理控制台,似乎即使TTL已过期,这些项目仍在队列中。所以我设置了一个小时的TTL,问题得到了缓解

    感谢所有在这件事上绞尽脑汁的人