所以我在 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)
;
wireTap 和目的地都将它们的数据发送到两个单独的文件。并且目标文件中的数据集合由 \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
的字符串。这解决了我的问题。
关于java - Apache Camel Java DSL 向正文添加换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41446884/