背景:春の統合DSL JmsMessageDrivenChannelAdapter無限の再試行
私たちは、下図のように春のXML設定ファイルに記述された春の統合アダプタを持っています。エラー処理のすべてのシナリオで完璧に動作しています。すべてのことは、エラー処理はエラーメッセージをキューに書き込むことです。今度は、このXML設定をDSLに変換する必要があります。これを以下のコードを使用して変更しました。
問題:エラーが「inputChannel」チェーンの内部で起こるたび
、我々はいくつかの検査を行うと、キューをエラーにしてペイロードを再試行していないエラーを書き込むためにエラー処理を望んでいました。 Spring XMLは必要なことを正確に実行していますが、エラー・メッセージをエラー・キューに入れた後にDSLに変更すると、ペイロードが入力キューに書き戻され、キューからのエラー・メッセージが消えて終了しません。
分析は、我々はやった:
は、エラーメッセージがプロセスのようなものを持っていないキューおよびDSLアダプタの設定をエラーに書き込まれた後に起こってエラーがありません。
これを解決するための助力や方向性は非常に高く評価されています。
ワーキング春のXMLアダプタ:DSLで
<int-jms:message-driven-channel-adapter
channel="inputChannel" container="jmsContainer" extract-payload="true" />
<beans:bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<beans:property name="connectionFactory" ref="connectionFactory" />
<beans:property name="destinationName" value="Queue.test" />
<beans:property name="errorHandler" ref="errorHandler" />
</beans:bean>
問題のあるアダプタ:
private JmsMessageDrivenChannelAdapter MessageDrivenChannelAdapter(
String destinationName, String key) throws Exception {
JmsMessageDrivenChannelAdapter channelAdapter = Jms
.messageDriverChannelAdapter(connectionFactory)
.outputChannel(inputChannel)
.configureListenerContainer(
c -> c.errorHandler(errorHandler))
.destination(destinationName)
.setHeaderMapper(new HeaderMapper(getChannelHeaders(key)))
.get();
return channelAdapter;
}