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 楼答案
这是一个奇怪的答案,但我在队列中的每条消息上都设置了TTL,根据AMQ管理控制台,似乎即使TTL已过期,这些项目仍在队列中。所以我设置了一个小时的TTL,问题得到了缓解
感谢所有在这件事上绞尽脑汁的人