メンテナンス作業中に特定のミュールフローを停止する必要があります(基本的にメンテナンス中にメッセージを処理しないようにする)。メンテナンスが終了すると、次のブロックを使用して停止し、同様のブロックを開始します。このフローの着信エンドポイントは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!");
}
}
}