You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fuse 7.13升级后Camel FTP组件无法被路由调用问题

解决Fuse 7.13中Aries Blueprint-Spring桥接时FTP组件找不到的问题

问题分析

虽然camel-ftp bundle已激活且Camel核心日志显示发现了FTP组件,但在Aries Blueprint-Spring桥接的场景下,组件没有被正确注册到Blueprint注册表中,导致路由解析时无法找到ftp组件。

解决方案

1. 显式在camel-context.xml中注册FTP组件Bean

由于当前camel-context.xml被当作Blueprint上下文处理,需要手动将FTP组件注册为Blueprint Bean,让Camel路由能从注册表中找到它:

<!-- 在<camelContext>标签之前添加 -->
<bean id="ftp" class="org.apache.camel.component.file.remote.FtpComponent"/>

<camelContext id="yourCamelContext" xmlns="http://camel.apache.org/schema/spring">
    <!-- 你的路由配置 -->
    <route id="route1">
        <from id="ftpServer" uri="file://App/Data/Listener/?sendEmptyMessageWhenIdle=true&amp;runLoggingLevel=OFF"/>
        <pollEnrich id="_pollEnrich1">
            <simple>ftp://hostname:21/folder/{otherproperties}</simple>
        </pollEnrich>
        <to id="fuseServer" uri="file://APP/Data/"/>
        <log id="_log1" message="log msg"/>
    </route>
</camelContext>

2. 确保业务Bundle的依赖导入正确

检查业务Bundle的MANIFEST.MF(或通过maven-bundle-plugin配置),确保导入了camel-ftp的相关包:

<!-- pom.xml中maven-bundle-plugin的配置 -->
<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <configuration>
        <instructions>
            <Import-Package>
                org.apache.camel.component.file.remote;version="[2.23,3)",
                <!-- 其他必要的包 -->
            </Import-Package>
        </instructions>
    </configuration>
</plugin>

这能保证业务Bundle可以访问到FTP组件的类。

3. 调整Bundle启动顺序

确保camel-ftp Bundle在业务Bundle之前启动,避免路由初始化时组件还未注册。可以在业务Bundle的Blueprint配置中添加强制依赖:

<!-- 如果有单独的blueprint.xml文件,添加以下配置 -->
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
    <require-bundle symbolic-name="org.apache.camel.camel-ftp"/>
</blueprint>

如果是在camel-context.xml中,可以通过Spring的导入功能引入该Blueprint配置。

4. 验证Camel上下文的注册表关联

确认Camel上下文使用了Blueprint注册表,显式指定注册表引用:

<bean id="blueprintRegistry" class="org.apache.camel.blueprint.BlueprintRegistry"/>

<camelContext id="yourCamelContext" xmlns="http://camel.apache.org/schema/spring">
    <property name="registry" ref="blueprintRegistry"/>
    <!-- 路由配置 -->
</camelContext>

总结

通过显式注册FTP组件、确保依赖导入、调整启动顺序这几步,基本可以解决Aries Blueprint-Spring桥接场景下FTP组件找不到的问题。

内容的提问来源于stack exchange,提问作者Augustin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 13:42:41