因此,我在 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。显然,transform/simple 组合存在一些问题,它在 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
到它。这解决了我的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)