[英]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.