spring - 如何将异常定向到 Spring Integration 中的自定义错误 channel ?

标签 spring error-handling spring-integration hybris

我在 SAP Commerce (hybris) 中使用自定义错误 channel 设置了一个自定义热文件夹,但我无法让 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"/>

关于spring - 如何将异常定向到 Spring Integration 中的自定义错误 channel ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61625926/

相关文章:

java - 如何获取在 spring 中注册的所有转换器和格式化程序?

java - 如何在网站上放置 Spring 应用程序?

error-handling - 常见的 lisp 重启到条件绑定(bind)

php - 如果 XML 文件为空,则捕获 PHP 错误

spring-integration - spring 集成 sftp java dsl : cannot resolve method handleWithAdapter

java - Spring Security Java Config 未生成注销 url

java - 如何向调用者方法发送成功消息?

c - 在 C 中使用字符串修剪删除空格、换行符和制表符

spring - 远程/进程内服务

java - 如何使用 spring 集成从 sftp 移动到本地目录时将不同文件保存到不同位置