我们有一个 Java 类,它监听数据库 (Oracle) 队列表并在该队列中有记录时对其进行处理。它在 UAT 和开发环境中正常工作。在生产中部署时,有时它无法从队列中读取记录。当插入记录时,它无法检测到它并且记录保留在队列中。这种情况很少发生,但确实会发生。如果我要统计一下,在一天排队的 30 条记录中,大约有 8 条没有成功。我们需要重新启动整个应用程序才能读取记录。
这是我班级的代码片段..
public class SomeListener implements MessageListener{
public void onMessage(Message msg){
InputStream input = null;
try {
TextMessage txtMsg = (TextMessage) msg;
String text = txtMsg.getText();
input = new ByteArrayInputStream(text.getBytes());
} catch (Exception e1) {
// TODO Auto-generated catch block
logger.error("Parsing from the queue.... failed",e1);
e1.printStackTrace();
}
//process text message
}
}
奇怪的是,我们无法从日志中找到任何异常痕迹。
任何人都可以帮忙吗?顺便说一下,我们将 receiveTimeout 设置为 10 秒