问题标签 [camel-ftp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4151 浏览

java - Apache camel - 将文件写入 ftp 失败

下面是我的简单文件组件消费者到 ftp 生产者组件的路径。

当我粘贴一个简单的文本文件时,我遇到了“写入失败”的异常。

在谷歌搜索并阅读了一些与骆驼相关的博客之后,以下是我尝试过的试验和案例

  1. 检查网络防火墙 - 不阻止
  2. 检查 Windows 防火墙 - 不阻止
  3. 检查手动文件传输到 ftp - 工作
  4. 检查使用 commons-net-3.7.jar FTPClient 传输文件的 java 方式 - 工作

只有通过 servicemix 它不起作用。写入文件失败。有人解决了同样的问题吗?

0 投票
2 回答
1221 浏览

java - 为什么我的属性在这个骆驼 sftp 路由中没有解析?

我正在创建一个骆驼路由,它从本地服务器读取文件,添加一些标题,然后将内容写入另一个远程 sftp 服务器上的文件。

我动态设置的标题之一是登录最终服务器所需的用户名。但是,当连接发生时,我可以看到我设置的用户名不用于登录,而是使用文字值“${in.header.senderTargetUserName}”。该属性未解决。

这是代码:

我得到这个例外:

当我在最终代码抛出异常之前设置断点时,我可以看到要登录的用户名设置为 ${in.header.senderTargetUserName}。

你也可以看到,camel 显示了它在异常之前的最新交换。该交换的标头包含我期望的值。

有任何想法吗?

0 投票
2 回答
4179 浏览

apache-camel - Apache Camel,FTP 消费者:如何获取先前路由的标头参数?

我有几条骆驼路线,并且在从数据库中读取数据时,我在一条路线中设置了一个名为 FILE_NAME 的 Exchange 对象的标头。作为下一步,这条路线会进一步到我的 FTP 路线,应该下载文件。问题是 FTP 路由没有收到带有我正在使用的 contentEnricher 的前一个路由的标头。这是官方行为:http ://camel.apache.org/content-enricher.html但是,FTP 端点的“fileName”参数可以动态构建以下载特定文件。

我的 FTP 路由看起来像这样,现在有示意图数据:

我怎样才能只下载上一条路线的标头值中提供的文件?我应该不使用内容丰富器还是应该将文件名存储在其他地方的变量中?也提前感谢您的回复。

编辑1:

感谢我进一步了解的帖子,但我需要回到同一点,因为我也可以从 pollEnrich() 中的简单表达式访问 Java DSL 的标头值,但不能在 to() 中访问。进程(Exchange 交换)打印正确的标头值,带有sftp 消费者的 pollEnrich 从sftp 服务器获取文件,但 ${header.FILE_NAME_ONLY} 和 ${in.header.FILE_NAME_ONLY} 在 to() 中都没有访问它。所以创建的文件将被命名为 "value of obNumber"_ 。你能看看下面的代码片段有什么不正确的吗?

解决方案:

最终的解决方案是 Jeremie B 在 2 月 25 日提出的动态路由器。问题是 pollEnrich() 吞噬了之前的头变量。因此它们可用于构造 URI,但之后无法访问以命名文件。我使用的是骆驼 2.16.1。

我做了什么:

  1. 使用动态路由器创建路由
  2. 创建了一个 bean,该 bean 被调用来确定下一条要到达的路线
  3. 在 pollEnrich 之前,我将必要的标头值保存在交换的地图中
  4. 在 pollEnrich 之后,我得到保存的标头值并将它们设置为标头
  5. 然后它被路由到它写入文件的路由。(它已经可以访问新设置的头变量)

两个有帮助的例子:

0 投票
2 回答
733 浏览

apache-camel - camel ftp 以递归方式导致 ftp 错误代码:226

我有一个非常简单的 ftp 路由,应该递归地从 URL 下载文件。今天让它继续运行非常重要。

没有代理,没有额外的身份验证,没有防火墙。但是,它只下载第一个文件,然后套接字将被关闭。我已经尝试了不同的超时,但它们并没有解决问题。如果我不使用任何超时或额外的配置选项,或者如果我使用注释掉的东西,则会重新调整错误代码 226,返回错误代码 221。226 似乎不是错误,因为它只是表明服务器完成了传输。我在下面复制的堆栈跟踪。我将提前感谢您的回复和感谢。

我在 pollEnrich 中使用的路线,因为我必须根据计时器启动它。

编码:

更新 1

我删除了 pollEnrich() 并且没有它可以正常工作。但是,我无法从另一条路线(例如计时器)启动它。所以这是一个让 FTP 运行的快速技巧。我还复制了这里的代码,就像我对幂等消费者所做的那样,这样只有那些尚未在磁盘上的文件才会被下载。它可能对其他人也有用。您可以在此处找到幂等消费者示例(Apache Camel ftp 消费者一次又一次地加载相同的文件)以获取更多信息。

堆栈跟踪

解决方案:

正如在 Upadete 1 中添加的那样,我不使用 pollEnrich()。该路线现在无法从计时器开始,但它可以工作。所以我会结束这个问题。我真的很喜欢幂等消费者的想法(与原始问题无关)。

0 投票
1 回答
289 浏览

java - Apache-camel sftp 消费者错误地使用了非 ascii 字符

我正在使用一个简单的骆驼 sftp 路由,例如:

它轮询 sftp 服务器抓取文件并将数据持久保存到数据库中。服务器上的文件以 utf-8 编码,这里是一个带有特殊字符的示例名称:

玛丽亚

该字符被路由消耗并保存为:

三月??????一个

关于为什么这些字符被错误地使用的任何想法?

0 投票
2 回答
1231 浏览

java - Apache Camel 将路由链接在一起

这是我试图实现的场景:

远程到 FTP 服务器 将大文件(大小为 3gig+)复制到本地文件夹 将本地文件流式传输到 Camel 处理器,一次批处理 100 行文件。将 Batched 行集写入 Kafka 主题。

现在我已经弄清楚了第一部分。我能够将文件读入本地目录。问题是,我如何启动第二条路由(将本地文件流式传输到 Kafka)?有没有办法将所有这些任务链接在同一条路线中,或者我应该有多条路线:

1 代表 FTP -> 本地文件,然后 1 代表本地文件 -> KAFKA

如果我需要两条路线,那么在第一条路线完成后开始第二条路线的最佳方式是什么。

感谢您的任何帮助。此外,这里是已经工作的 FTP 部分。

0 投票
1 回答
868 浏览

apache-camel - Camel SFTP,quartz2 组件给出:无法检索文件:由 GenericFileOperationFailedException 引起,当从 sftp 轮询多个文件时

我正在尝试使用以下骆驼路线和使用quartz2调度程序从sftp位置轮询文件,在轮询几个文件后,我得到了GenricFileOperationFailedException caused by java.io.IOException: Pipe closed

我只有在使用quartz2 Scheduler 时才会遇到这个问题。当我在骆驼路线中使用 '&delay=10000' 参数时,上面的骆驼路线完全可以正常工作。

错误堆栈跟踪:

我没有使用任何其他要在骆驼路线中关闭的 IO 流。

0 投票
1 回答
224 浏览

apache-camel - 使用 apache camel 连接失败时访问 FTP 使用者中的 routeID

我在路由中使用 FTP 端点,当与 ftp 的连接由于某种原因(例如连接超时或套接字超时)失败时,我需要将路由详细信息记录到数据库。我使用轮询策略,并且该策略中的回滚方法在连接超时时被调用。但是回滚方法不允许我访问 RouteID 以将其记录到数据库中。

在做了一些原因之后,我发现了可以设置为 true 的标志 consumer.bridgeErrorHandler 以将异常传递给默认的错误处理程序。但这只是记录错误,并没有解决我如何获取路线详细信息的问题。

有人可以帮助您了解如何在回滚方法中访问 routeID,或者您可能有任何其他想法。

我正在使用 apache 骆驼 2.13.4

0 投票
2 回答
1217 浏览

apache-camel - 如何停止骆驼 sftp 消费者的 JSCH 日志

我的骆驼 SFTP 消费者每 10 秒连接一次服务器,并且在每次连接期间,它都会打印大量的日志消息,如此处所述。

02-05-2016 20:48:34,441 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/下载] JSCH -> kex: 客户端: hmac-md5,hmac-sha1,hmac-sha1-96,hmac-md5-96

02-05-2016 20:48:34,441 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/下载] JSCH -> kex:客户端:无

02-05-2016 20:48:34,441 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/下载] JSCH -> kex:客户端:无

02-05-2016 20:48:34,441 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/下载] JSCH -> kex:客户端:

02-05-2016 20:48:34,441 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/下载] JSCH -> kex:客户端:

02-05-2016 20:48:34,441 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/下载] JSCH -> kex: 服务器-> 客户端 aes128-ctr hmac-md5 无

02-05-2016 20:48:34,441 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/下载] JSCH -> kex: 客户端-> 服务器 aes128-ctr hmac-md5 无

02-05-2016 20:48:34,443 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/download] JSCH -> SSH_MSG_KEXDH_INIT 发送

02-05-2016 20:48:34,444 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/download] JSCH -> 期待 SSH_MSG_KEXDH_REPLY

02-05-2016 20:48:34,762 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/download] JSCH -> ssh_rsa_verify:签名为真

02-05-2016 20:48:34,762 WARN (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/download] JSCH -> 将“11.11.11.11”(RSA)永久添加到已知主机列表中。

02-05-2016 20:48:34,763 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/download] JSCH -> SSH_MSG_NEWKEYS 发送

02-05-2016 20:48:34,763 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/download] JSCH -> 收到 SSH_MSG_NEWKEYS

02-05-2016 20:48:34,763 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/download] JSCH -> SSH_MSG_SERVICE_REQUEST 发送

02-05-2016 20:48:35,079 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/download] JSCH -> SSH_MSG_SERVICE_ACCEPT 收到

02-05-2016 20:48:35,391 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/download] JSCH -> 可以继续的身份验证:publickey,keyboard-interactive,password

02-05-2016 20:48:35,391 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/download] JSCH -> 下一个认证方法:publickey

02-05-2016 20:48:35,391 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/download] JSCH -> 可以继续的身份验证:密码

02-05-2016 20:48:35,391 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/download] JSCH -> 下一个认证方式:密码

02-05-2016 20:48:35,707 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/download] JSCH -> 身份验证成功(密码)。

02-05-2016 20:48:36,662 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/download] 连接到 sftp://username@11.11.11.11:22

02-05-2016 20:48:36,662 INFO (org.apache.camel.component.file.remote.SftpConsumer) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/download] 连接并登录到:sftp://username@11.11.11.11:22

02-05-2016 20:48:38,539 信息 (org.apache.camel.component.file.remote.SftpOperations) [骆驼 (camel-99) 线程 #117 - sftp://username:******@ 11.11.11.11:22/download] JSCH -> 从 11.11.11.11 端口 22 断开连接

如何阻止这些消息出现在日志中?

0 投票
2 回答
519 浏览

web-services - 基于文件名/cfg 文件/属性名的动态 URI

我正在尝试使用属性值动态传递到 URI值。该属性值将已在 cfg 文件中配置。

当使用 CamelFileNameOnly 标头提取文件名时,它必须传递到 to Uri 端点。以便在代码中引用相同的名称。

请在下面找到我的代码:

我在我的服务器位置删除了一个名为 KevinFile.txt 的文件 = D:\Servers\jboss-fuse-6.2.0.redhat-133\data\myLocalFTP (file://data/myLocalFTP)

配置文件

骆驼路线

处理器类.java