如果我有跟随camel路由并发送udp消息,则不会将任何内容打印到stdout:
<route>
<from uri="netty:udp://0.0.0.0:5000"/>
<to uri="mock:stdout"/>
</route>
但是,如果我添加一个解码器,我可以看到udp消息打印在stdout上
<bean class="org.jboss.netty.handler.codec.string.StringDecoder" id="stringDecoder">
<constructor-arg value="UTF-8"/>
</bean>
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="netty:udp://0.0.0.0:5000?decoder=#stringDecoder"/>
<to uri="mock:stdout"/>
</route>
</camelContext>
有人可以解释为什么默认解码器不会将消息传递给模拟端点。它在等待EOF类型的信号吗?
我正在使用以下方式发送消息:
$ cat json.txt | nc -4u -w1 hostname 5000
Apache camel netty页面解释了:
allowDefaultCodec == true
Camel 2.4: The netty component installs a default codec if both,
encoder/deocder is null and textline is false.
Setting allowDefaultCodec to false prevents the netty component from installing a
default codec as the first element in the filter chain.
答案 0 :(得分:0)
字符串解码器要求您使用新行来终止字符串。所以请务必在发送时加入。
例如在javadoc和代码示例中,您可以看到他们使用\n
https://docs.jboss.org/netty/3.2/api/org/jboss/netty/handler/codec/string/StringDecoder.html