我有一个工作正常的队列生产者。 我有一个工作正常的队列接收器。
这个问题就是这个问题。如果我启动生产者并且它开始将数据泵入队列并且稍后我启动接收器它似乎只是获取在我启动接收器之后出现的数据,所以队列中的项目放在那里之前接收器开始永远不被推。
有没有办法让接收器在队列的开头开始,而不管接收器的开始时间如何?我已经回顾了接收器类的方法,并且似乎没有看到任何建议的方法。
非常感谢您的帮助。
要求提供一些其他信息......
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();
生产者代码要复杂得多,不容易发布,因为它包含在多个类中,但这里是队列创建部分:
公共课qDestinations {
public static Queue createDest(Session session, String destName) { try { return session.createQueue(destName); } catch (JMSException e) { System.out.println(e.getMessage()); return null; } }
我希望这有助于解决这个问题。
}
答案 0 :(得分:0)
这是一个奇怪的答案,但我已经将每条消息的TTL设置到队列中,看起来即使TTL已经过期,根据AMQ管理控制台,这些项目仍在排队。所以我将TTL设置为一小时,问题已经缓解。
感谢所有在这个问题上划破集体头衔的人。