如何在 Spring 集成中将异常定向到自定义错误通道?
How can I direct exception to a custom error channel in Spring Integration?
我在 SAP Commerce (hybris) 中使用自定义错误通道设置了自定义热文件夹,但我无法 Spring 调用我的自定义错误处理程序 NviMediaErrorHandler
。这是 hot-folder-spring.xml 文件中的设置。
<!-- General set-up -->
<int:channel id="nviMediaErrorChannel"/>
<int:service-activator ref="nviMediaErrorHandler" input-channel="nviMediaErrorChannel" method="onError"/>
<bean id="nviMediaErrorHandler" class="com.nvi.core.data.hotfolder.media.task.ErrorHandler">
<property name="cleanupHelper" ref="nviMediaCleanupHelper"/>
</bean>
<bean id="nviMediaCleanupHelper" class="com.nvi.core.data.hotfolder.media.task.NviMediaCleanupHelper"/>
<bean id="mediaDirectoryNvi" class="java.lang.String">
<constructor-arg value="#{baseDirectory}/${tenantId}/nvi/media"/>
</bean>
<!-- Image file import process -->
<!-- 1) Scans a directory in a configurable interval and sends files to a configured channel -->
<file:inbound-channel-adapter id="mediaFilesNvi" directory="#{mediaDirectoryNvi}"
filename-regex="^\d+(_\d+)?\.(png|jpe?g)" comparator="fileOrderComparator"
prevent-duplicates="false">
<int:poller fixed-rate="1000"/>
</file:inbound-channel-adapter>
<!-- 2) Move file to processing/ directory and set up header -->
<file:outbound-gateway request-channel="mediaFilesNvi" reply-channel="mediaFilesNviProcess"
directory="#{mediaDirectoryNvi}/processing" delete-source-files="true"/>
<int:service-activator input-channel="mediaFilesNviProcess" output-channel="mediaHeaderSetup"
ref="mediaHeaderSetupTask" method="execute"/>
<bean id="mediaHeaderSetupTask" class="com.nvi.core.data.hotfolder.media.task.HeaderSetupTask">
<property name="catalogs">
<util:list id="catalogList" value-type="java.lang.String">
<value>ambestProductCatalog</value>
<value>egwProductCatalog</value>
<value>moProductCatalog</value>
<value>walmartProductCatalog</value>
</util:list>
</property>
</bean>
<!-- 3) Import image file -->
<int:service-activator input-channel="mediaHeaderSetup" output-channel="mediaFileImport"
ref="productImageImportTask" method="execute"/>
<bean id="productImageImportTask" class="com.nvi.core.data.hotfolder.media.task.ProductImageImportTask"/>
<!-- Clean up -->
<int:service-activator input-channel="mediaFileImport" ref="fileCleanupTask" method="execute"/>
<bean id="fileCleanupTask" class="com.nvi.core.data.hotfolder.media.task.CleanupTask">
<property name="cleanupHelper" ref="nviMediaCleanupHelper"/>
</bean>
我需要进入 nviMediaErrorHandler
并调用 com.nvi.core.data.hotfolder.media.task.ErrorHandler
的错误,而不是 SAP Commerce 的开箱即用 ErrorHandler
。
任何帮助表示赞赏。谢谢!
<int:poller fixed-rate="1000" error-channel="nviMediaErrorHandler"/>
我在 SAP Commerce (hybris) 中使用自定义错误通道设置了自定义热文件夹,但我无法 Spring 调用我的自定义错误处理程序 NviMediaErrorHandler
。这是 hot-folder-spring.xml 文件中的设置。
<!-- General set-up -->
<int:channel id="nviMediaErrorChannel"/>
<int:service-activator ref="nviMediaErrorHandler" input-channel="nviMediaErrorChannel" method="onError"/>
<bean id="nviMediaErrorHandler" class="com.nvi.core.data.hotfolder.media.task.ErrorHandler">
<property name="cleanupHelper" ref="nviMediaCleanupHelper"/>
</bean>
<bean id="nviMediaCleanupHelper" class="com.nvi.core.data.hotfolder.media.task.NviMediaCleanupHelper"/>
<bean id="mediaDirectoryNvi" class="java.lang.String">
<constructor-arg value="#{baseDirectory}/${tenantId}/nvi/media"/>
</bean>
<!-- Image file import process -->
<!-- 1) Scans a directory in a configurable interval and sends files to a configured channel -->
<file:inbound-channel-adapter id="mediaFilesNvi" directory="#{mediaDirectoryNvi}"
filename-regex="^\d+(_\d+)?\.(png|jpe?g)" comparator="fileOrderComparator"
prevent-duplicates="false">
<int:poller fixed-rate="1000"/>
</file:inbound-channel-adapter>
<!-- 2) Move file to processing/ directory and set up header -->
<file:outbound-gateway request-channel="mediaFilesNvi" reply-channel="mediaFilesNviProcess"
directory="#{mediaDirectoryNvi}/processing" delete-source-files="true"/>
<int:service-activator input-channel="mediaFilesNviProcess" output-channel="mediaHeaderSetup"
ref="mediaHeaderSetupTask" method="execute"/>
<bean id="mediaHeaderSetupTask" class="com.nvi.core.data.hotfolder.media.task.HeaderSetupTask">
<property name="catalogs">
<util:list id="catalogList" value-type="java.lang.String">
<value>ambestProductCatalog</value>
<value>egwProductCatalog</value>
<value>moProductCatalog</value>
<value>walmartProductCatalog</value>
</util:list>
</property>
</bean>
<!-- 3) Import image file -->
<int:service-activator input-channel="mediaHeaderSetup" output-channel="mediaFileImport"
ref="productImageImportTask" method="execute"/>
<bean id="productImageImportTask" class="com.nvi.core.data.hotfolder.media.task.ProductImageImportTask"/>
<!-- Clean up -->
<int:service-activator input-channel="mediaFileImport" ref="fileCleanupTask" method="execute"/>
<bean id="fileCleanupTask" class="com.nvi.core.data.hotfolder.media.task.CleanupTask">
<property name="cleanupHelper" ref="nviMediaCleanupHelper"/>
</bean>
我需要进入 nviMediaErrorHandler
并调用 com.nvi.core.data.hotfolder.media.task.ErrorHandler
的错误,而不是 SAP Commerce 的开箱即用 ErrorHandler
。
任何帮助表示赞赏。谢谢!
<int:poller fixed-rate="1000" error-channel="nviMediaErrorHandler"/>