データベース (Oracle) キュー テーブルをリッスンし、そのキューにレコードが配置されている場合にそれを処理する Java クラスがあります。UAT および開発環境では正常に動作しました。本番環境へのデプロイ時に、キューからレコードを読み取れない場合があります。レコードが挿入されると、それを検出できず、レコードはキューに残ります。これはめったに起こりませんが、起こります。統計を出すとしたら、1 日にキューに入れられた 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 秒に設定しています