我有一个接收来自队列消息的客户端。我目前有一个执行onMessage()
的MessageListener
。我可以直接向队列发送消息请求吗?
一旦收到消息,它将被进一步处理,然后保存到onMessage()
方法的数据库中;客户然后确认收到的消息。
只要数据库启动就没有问题。但是,如果数据库关闭,客户端将不会确认。
为了迎合这一点,我希望客户端按计划的时间间隔向队列发送预定的请求,以发送任何未确认的消息。
事实上,我这样做的唯一方法是重新启动客户端,这不是理想的。有没有办法触发队列重新发送未确认的消息而不重新启动?
我有onMessage()
:
//code to connect to queue
try {
if (DB is available){
//process message
//save required details to DB
msg.acknowledge();
}
else{
//schedule to request same message later from queue
}
} catch (Exception e) {}
如果数据库关闭,为什么不等到启动前再尝试继续。这样就没有必要重播消息 – 2012-01-08 11:05:36
你的意思是阻止直到数据库启动?我不确定这是否可以......除非我误解你的评论。 – gkinu 2012-01-08 14:23:02
如果你阻塞,直到数据库启动会发生什么?该线程是否有更重要的事情要做? ;)如果是这样,我会在另一个线程,会话或连接中运行更重要的事情。 – 2012-01-08 14:25:46