当前位置: 首页 > 知识库问答 >
问题:

Apache camel组播(ftps&file)生成空文件

厍浩广
2023-03-14
.to("ftps:....").to("file:...")
.to("ftps:...").to("file:..."))
camelContext.addRoutes(new RouteBuilder() {
 def void configure() {
  from("file:///home/xyz/?fileName=file.txt&charset=utf-8&noop=true")
   .multicast()
   .to("ftps://localhost:21/files?username=anonymous&password=anonymous&binary=true&fileName=file.txt&passiveMode=true&fileExist=Fail")
   .to("file://${directory}?fileName=\${file:name}-\${date:now:yyyyMMddHHmmssSSS}")
 }
})

我期望多播应该在没有数据丢失的情况下向两个endpoint写入相同的内容。

共有1个答案

空英逸
2023-03-14

看为什么我的留言是空的?。文件使用者返回inputstream,它被第一个endpoint使用,因此对于第二个endpoint为空。您需要启用流缓存,或者在组播之前将body转换为一些可重用的对象(例如string)。

启用流缓存:

from("file:///home/xyz/?fileName=file.txt&charset=utf-8&noop=true")
    .streamCaching()
    .multicast()
    ...

转换正文:

from("file:///home/xyz/?fileName=file.txt&charset=utf-8&noop=true")
    .convertBodyTo(String.class)
    .multicast()
    ...
 类似资料:
  • 通过日志收集系统将分散在数百台服务器上的数据集中存储在某中心服务器上,这是运维最原始的需求。早年的 scribed ,甚至直接就把输出的语法命名为 <store>。Logstash 当然也能做到这点。 和 LogStash::Inputs::File 不同, LogStash::Outputs::File 里可以使用 sprintf format 格式来自动定义输出到带日期命名的路径。 配置示例

  • 文件组织指示如何在文件中组织记录。 文件有不同类型的组织,以提高其访问记录的效率。 以下是文件组织方案的类型 - 顺序文件组织 索引顺序文件组织 相对文件组织 本模块中的语法及其各自的术语仅涉及它们在程序中的用法。 使用这些语法的完整程序将在“文件处理动词”一章中讨论。 顺序文件组织 顺序文件由按顺序存储和访问的记录组成。 以下是顺序文件组织的关键属性 - 可以按顺序读取记录。 要读取第10条记录

  • 我的申请中有如下路线- 从("sftp: config").到("file: config") 我必须在生成endpoint时处理那些超出apache camel默认异常处理边界的异常。例如。编写文件时可能会出现异常。我如何处理那个异常? 在camel文档中,我了解到,对于文件消费者,他们提供了不同的选项,比如-consumer。errorHandler和consumer。bridgeErrorH

  • 补充知识:SPRING MVC文件上传功能关于不能实例化multipartfile对象原因分析   实现文件上传有几个需要注意的地方   1、文件上传的HTML,需要在form中加入enctype="multipart/form-data"

  • FTPS (also known as FTP Secure and FTP-SSL) is an extension to the commonly used File Transfer Protocol (FTP) that adds support for the Transport Layer Security (TLS) and the Secure Sockets Layer (SSL

  • 我正在尝试向异步路由发送消息,但它不起作用。我刚刚在github上创建了一个项目来模拟这个问题