私は、キューマネージャの複数のキューにメッセージを送信するために使用するJMSアウトバウンドゲートウェイを持っています。宛先はdestinationExpression
方法使用して、その場で決定されます。発信メッセージに配信遅延を動的に追加する方法はありますか。
@Bean
public IntegrationFlow sendTo101() {
return flow -> flow
.handle(Jms
.outboundAdapter(context.getBean("connection101", ConnectionFactory.class))
.destinationExpression("headers.destinationName")
.configureJmsTemplate(spec -> spec
.explicitQosEnabled(true)
.get().setDeliveryDelay(180000)
)
.get(),
endpointSpec -> endpointSpec.advice(context.getBean(RequestHandlerRetryAdvice.class))
);
}
今すぐに来るメッセージの特定のサブセットに配信遅延を設定する必要がありますが、メッセージの内容を使用する方法はあります私は遅延を追加するかどうかを決定するかどうか?
このプロパティをチェックしてフローを別の発信ゲートウェイにリダイレクトするフィルタを追加することもできますが、それはかなり冗長なコードになりますので、より良い方法がないことを確認したかったのです。
また、メッセージによって、異なる遅延が必要です。メッセージごとに異なる遅延を設定することは可能ですか?私は遅延プロパティがメッセージプロデューサにあり、JMS仕様に従ってメッセージに設定したものではないことを認識していますが、パフォーマンスが低下してもメッセージごとに新しいJMSプロデューサを作成しても問題ありません。
ありがとうございました!