Apache Camel Java DSL add newline to body

女生的网名这么多〃 提交于 2019-12-10 22:55:17

问题


So I have a netty4 socket route set up in Java DSL that looks like the following:

@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)
;

Where both the wireTap and the destination are sending their data to two separate files. And the data collection in the destination file is separated by a \n (line break)... or at least it should be.

When viewing the files created, the \n is never added.

The equivalent idea in the Spring DSL worked before I switched to Java:

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

After using that and opening the files created during the route, the lines of data that came in through the socket would be separated by a newline.

What am I doing wrong in the Java DSL that doesn't allow the newline to be appended to the socket data as it comes in?

I feel like it's something obvious that I just don't see.

The data that is coming in is just a CSV-like line of text.


回答1:


I found a solution, I'm never sure what can be translated almost word from word from Spring to Java. Apparently the transform/simple combination has some issue where it will not work for me in Java DSL.

So a possible solution (there may be more solutions) is to do this:

@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)
;

Where instead of using the Simple language to manipulate the body, I just call on the body and append a String of \n to it. And that solves my issue.



来源:https://stackoverflow.com/questions/41446884/apache-camel-java-dsl-add-newline-to-body

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!