Apache camel 为什么骆驼路线失败
我有一段非常简单的camel代码Apache camel 为什么骆驼路线失败,apache-camel,Apache Camel,我有一段非常简单的camel代码 public class MainApp2 { /** * A main() so we can easily run these routing rules in our IDE */ public static void main(String... args) throws Exception { CamelContext context = new DefaultCamelContext();
public class MainApp2 {
/**
* A main() so we can easily run these routing rules in our IDE
*/
public static void main(String... args) throws Exception {
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
public void configure() {
from("sftp://ghana.corp.sensis.com:22/orders/?username=dsargrad&password=xxx")
.log("Received order: ${header.CamelFileName}")
//.to("file:///home/dsargrad/order_processed")
.to("file:data/outbox")
;
}
});
context.start();
Thread.sleep(1000000);
context.stop();
}
}
路线的“发件人”部分工作正常。我能够连接到FTP服务器并在“orders”目录中查找文件。日志消息表明
orders文件夹的内容是一个文件:
但是,当我尝试使用路由的to部分将这些文件复制到文件夹时,我看到以下失败
我用相对路径和绝对路径(/home/dsargrad/order\u processed)尝试了这一点。我已经验证了这两条路径的存在。相对路径是相对于我运行java应用程序的位置定义的
以下是有效的绝对路径。
以下是绝对路径的故障
下图显示了来自独立FTP客户端的orders文件夹的内容。这告诉我FTP服务和用户名/密码都很好
这是运行带有依赖项的“uber”jar时的常见错误。一些Maven插件(例如,
Maven assembly plugin
)排除了一些类型转换正确功能所需的META-INF
条目。请参阅此常见问题解答条目:
我建议使用maven shade plugin
进行以下配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>executable-jar</shadedClassifierName>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>my.package.MainClass</mainClass> <!-- Change main class here -->
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/services/org/apache/camel/TypeConverterLoader</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
org.apache.maven.plugins
maven阴影插件
3.2.1
包裹
阴凉处
真的
可执行jar
my.package.main类
META-INF/services/org/apache/camel/TypeConverterLoader
这是运行带有依赖项的“uber”jar时的常见错误。一些Maven插件(例如,Maven assembly plugin
)排除了一些类型转换正确功能所需的META-INF
条目。请参阅此常见问题解答条目:
我建议使用maven shade plugin
进行以下配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>executable-jar</shadedClassifierName>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>my.package.MainClass</mainClass> <!-- Change main class here -->
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/services/org/apache/camel/TypeConverterLoader</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
org.apache.maven.plugins
maven阴影插件
3.2.1
包裹
阴凉处
真的
可执行jar
my.package.main类
META-INF/services/org/apache/camel/TypeConverterLoader
真正奇怪的是,如果我用from(文件:)替换from(sftp)并使用相同的to(文件),那么路由工作正常。请帮助我理解调用堆栈的以下部分“没有可从…RemoteFile转换为…InputStream的类型转换器”,真正奇怪的是如果我替换from(sftp)使用from(文件:)并使用相同的to(文件),则路由工作正常。请帮助我理解调用堆栈的以下部分“没有可从…RemoteFile转换为…InputStream的类型转换器”贝德拉,谢谢你的反馈。我会阅读你建议的链接,我也会尝试你建议的maven插件。很高兴收到社区的反馈。我只创建了一个“优步”jar,因为我认为这是最简单的方法。显然,我在这个过程中制造了问题。运行包含骆驼应用程序的非优步jar的正确方法是什么?是的,也可以看到这个常见问题:谢谢@ClausIbsenBedla,谢谢你的反馈。我会阅读你建议的链接,我还会尝试你建议的maven插件。所以,gla我只是创建了一个“优步”jar,因为我认为这是最简单的方法。显然,我在这个过程中制造了问题。运行一个包含骆驼应用程序的非优步jar的正确方法是什么?是的,也看到这个常见问题:谢谢@ClausIbsen