我想找到一种方法来防止“collector”类永远等待,因为它的内容是不完整的,而且它无法知道丢失的事件消息不存在,无法传递给它。
我有一个名为eventset的类,它具有从jms onmessage侦听器传递给它的相关事件msg(来自监视)。每个相关事件都有一个序列号,最后一个事件称为“txnend”,它的序列号最高。当事件msgs的总数等于txnend的序列号时,我知道所有事件都存在,并且我的代码指示回调类处理事件集。
当缺少一个事件时,eventset的示例会一直耐心地等待。
我解决这个问题的想法是,在创建类时,以某种方式对等待时间进行限制。当超过这个值时,我的代码应该指示回调处理不完整的事件集。
在过去的2/3个月里,我曾在密歇根州的两个场合,根据建议和想法,尝试这个和那个,但都没有成功。直到现在,这是可能的停车,因为它几乎从来没有发生过。现在,我确实需要解决它。
从本质上说,这似乎是一个相当普遍的情况,应该有一个直接的解决办法。我没找到一个。
如有任何建议或解决办法,我将不胜感激。
2条答案
按热度按时间scyqe7ek1#
解决方案是使用计时器和timertask(作为内部类)。如果接收到所有相关事件,则构造函数将创建计时器并按所需的秒数调度timertask,然后调用回调并取消计时器。在少有的情况下,如果事件丢失,timertask会启动并向回调发送一组不完整的事件并记录错误。
仅供参考。
公共类事件集{
}
eeq64g8w2#
我不知道你的库是否支持这种方法,但是一个普通的java尝试会像这样: