繁体   English   中英

Apache Camel Java DSL 向正文添加换行符

[英]Apache Camel Java DSL add newline to body

所以我在 Java DSL 中设置了一个 netty4 套接字路由,如下所示:

@Override
public void configure() throws Exception {
    String dailyDataUri = "{{SOCKET.daily.file}}" + "&fileName=SocketData-${date:now:yyyyMMdd}.txt";
    from(socketLocation).routeId("thisRoute")
    .transform()
        .simple("${in.body}\n")
    .wireTap(dailyDataUri)
    .to(destination)
;

窃听器和目的地都将它们的数据发送到两个单独的文件。 并且目标文件中的数据集合由\\n (换行符)分隔......或者至少应该如此。

查看创建的文件时,永远不会添加\\n

在我切换到 Java 之前,Spring DSL 中的等效想法有效:

<transform>
    <simple>${in.body}\n</simple>
</transform>

在使用它并打开路由期间创建的文件之后,通过套接字进入的数据行将由换行符分隔。

我在 Java DSL 中做错了什么,不允许将换行符附加到传入的套接字数据中?

我觉得这很明显,我只是看不到。

传入的数据只是类似于 CSV 的文本行。

我找到了一个解决方案,我不确定从 Spring 到 Java 的几乎每个单词都可以翻译成什么。 显然,转换/简单组合存在一些问题,它在 Java DSL 中对我不起作用。

所以一个可能的解决方案(可能有更多的解决方案)是这样做的:

@Override
public void configure() throws Exception {
    String dailyDataUri = "{{SOCKET.daily.file}}" + "&fileName=SocketData-${date:now:yyyyMMdd}.txt";
    from(socketLocation).routeId("thisRoute")
    .transform(body().append("\n"))
    .wireTap(dailyDataUri)
    .to(destination)
;

我没有使用简单语言来操作正文,而是调用正文并将\\n字符串附加到它。 这解决了我的问题。

更新:Camel 3.x 及更高版本的文件组件提供了附加所需字符的功能。

当您使用文件组件(生产者)编写文件时

appendChars(生产者)

用于在写入文件后附加字符(文本)。 例如,这可用于在写入和附加新文件或现有文件时添加新行或其他分隔符。 要指定换行符(slash-n 或 slash-r)或制表符(slash-t)字符,然后用额外的斜杠转义,例如 slash-slash-n。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM