2017-09-20 3 views
1

私は、ウサギmqを聞いて、入力msgに基づいて挿入/更新操作を行い、それを基礎となるDb2データベースに保持するストリームリスナを持っています。データベースには、週に6時間のダウンタイムがあります。この時間フレーム中にリスナーが実行されないようにスケジュールすることで、入力メッセージを失うことはありません。このmsgは非同期コンテキストのウサギ待ち行列の上流から送信されるので、ダウンタイムの後に再送/再試行するように上流に頼むことはできません。ダウンストリームを避けるためにスプリングストリームリスナをスケジュールする

@StreamListener(target = Sink.INPUT) 
public void testListener(byte[] msg) 
{ 
    System.out.println(new String(msg)); 
    try{ 
     int count = zoneInsert(mapper.readValue(msg, OrderDTO.class)); 
     System.out.println("inserted "+count+" row"); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 

答えて

2

今はあまりありません。我々はライフサイクルコントロールのサポートを2.0に追加しています。 1.リスニングアプリケーションを停止する(可能な場合) 2.エラーメッセージをDLQに転送し、DBが復活した直後にDLQアプリケーションを開始するようにスケジュールします。

関連する問題