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

如何在camel XML路由中删除部分文件名

金英华
2023-03-14
<route id="outboundoFtpPoller">
    <from uri="file:/generatedFiles?move=done/${date:now:yyyyMMdd}/${file:name}&amp;moveFailed=failed/${file:name.noext}-${date:now:yyyyMMddHHmmssSSS}.${file:ext}"/>
    <to uri="ftp:{{ftp.server}}{{ftp.subdirectory}}/outbox/<what goes here?>" />
</route>

共有1个答案

耿俊彦
2023-03-14

您可以添加这个处理器,它在将文件发送到ftp生成器之前使用正则表达式设置文件名

<route id="outboundoFtpPoller">
    <from uri="file:/generatedFiles?move=done/${date:now:yyyyMMdd}/${file:name}&amp;moveFailed=failed/${file:name.noext}-${date:now:yyyyMMddHHmmssSSS}.${file:ext}"/>
    <bean id="myProcessor" class="mypackage.MyProcessor"/>
    <to uri="ftp:{{ftp.server}}{{ftp.subdirectory}}/outbox/<what goes here?>" />
</route>

我的处理器在哪里

public class MyProcessor implements Processor {
    @Override
    public void process(Exchange exchange) throws Exception {
        String fileName = exchange.getIn().getHeader(Exchange.FILE_NAME_ONLY, String.class).replaceAll("-\\d+", "");
        exchange.getIn().setHeader(Exchange.FILE_NAME,fileName);
    }
}

不使用处理器更新尝试添加此

  <setHeader headerName="CamelFileName">
            <simple>${in.header.CamelFileName.replaceAll("-\d+","")}</simple>
        </setHeader>
 类似资料:
  • 假设我的下一个XML来自Oracle队列到驼峰路径: 我想在我的路线中处理这个交换主体,并删除一些元素,例如,然后继续处理主体: 最简单的方法是什么?当然,可以通过声明一些bean或Camel处理器来完成,该处理器将主体作为XML封送/解封送并返回。 但是我想知道骆驼是否有另一种方法?

  • 问题内容: 我有一条路线映射为: 如何在运行时删除/重新映射此路由到空处理程序? 问题答案: 这将删除中间件和/或(获取/发布)路由。在express@4.9.5上测试 请注意,它 要求 中间件/路由功能具有 名称 : 如果该函数是匿名的, 它将不起作用 :

  • 问题内容: 我想从当前目录中的所有文件名中删除 test.extra 但是它抱怨没有找到file.echo是为了确保它正确列出。 问题答案: 首先使用“ sed -e”代替“ \ e” 我建议您用bash这样做

  • 我想从elasticsearch索引中删除一些数据,而不是完整的索引,我的问题是如何找到所有可用碎片的文档id。对此的查询是什么?? 我使用了以下查询来删除特定文档,但它抛出错误,所以我认为我的文档ID是错误的。请让我知道如何获取可用分片的正确文档ID。 我的数据流是postgresql到logstash到elasticsearch到kibana。但问题是索引大小正在增加很多,它进入GB的内存,而

  • 我有一个包含一些文件路径的长文本。 我想做的是从其中删除路径。文件路径都类似于: 我知道使用“^/all”将选择以/all开头的句子,并选择以.js$结尾的句子。但我无法将这些合并在一起以选择整个文件路径。 毕竟,正则表达式应该放在下面的代码上以删除路径。 我能为它写正则表达式吗?有什么工具吗?