所以我在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的文本行。
答案 0 :(得分:1)
我找到了一个解决方案,我从来不知道从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
字符串。这解决了我的问题。