2016-05-19 5 views
0

メンテナンス作業中に特定のミュールフローを停止する必要があります(基本的にメンテナンス中にメッセージを処理しないようにする)。メンテナンスが終了すると、次のブロックを使用して停止し、同様のブロックを開始します。このフローの着信エンドポイントはJMSタイプです(Tibco EMSを使用)。停止と始動の後に時々一つの悪い消費者があることを除いて、すべてうまくいくので、ミュールは余分な消費者を1つ作ります。悪い消費者はメッセージを消費し(メンテナンス後に初めてメッセージが到着したとき)、配信しません。だから基本的にメッセージは止まってしまい、アプリケーションはこれを受け取ることはありません。ミュールを停止してフローを開始すると古いコンシューマーが手動で保持され、メッセージが残っています

これを解決する方法はありますか?特定の時間にメッセージを消費しないように、アプリケーション全体を停止させることなく、より良い方法がありますか?

for (FlowConstruct flowConstruct : flowConstructs) { 
     Flow flow = (Flow) flowConstruct; 
     if (flowsToStop.contains(flow.getName())) { 
      if(!flow.isStopped()) { 
       flow.stop(); 
      } else { 
       logger.warn("Flow " + flow.getName() + " was already stopped!"); 
      } 

     } 
    } 

答えて

関連する問題