问题
I have a Camel Netty route that takes XML sent to a server port and places it in a JMS message. After the first message, every other message has a newline at the top of the message, causing my XML to fail to unmarshall when a GUI receives it.
My route look like this:
<route>
<from uri="netty4:tcp://localhost:5150?decoders=#customFrameDelimeterDecoder,#string-decoder&encoder=#string-encoder"/>
<to uri="jms:topic:my.company.topic"/>
</route>
Note: The XML is not newline terminated, hence the need for a custom frame delimeter decoder.
回答1:
Try setting:
<from uri="netty4:tcp://localhost:5150?textline=true&delimiter=NULL"/>
The problem is that camel-netty4
is adding a delimiter to your message because of the codec text, so it seems that it is putting a empty string at the end of your message.
You could also try to add autoAppendDelimiter
to false. According to docs:
delimiter | LINE | The delimiter to use for the textline codec. Possible values are LINE and NULL
autoAppendDelimiter | true | Whether or not to auto append missing end delimiter when sending using the textline codec.
Cheers!
EDIT: Sorry, I was trying to answer your other question that was marked as duplicated. But maybe this answer also fits. Let me know.
来源:https://stackoverflow.com/questions/47372858/why-is-my-camel-netty-route-adding-newlines-to-the-start-of-my-jms-messages