【发布时间】:2017-07-05 17:57:41
【问题描述】:
我有两条使用 netty4 组件的路由,它们应该读取和写入同一个套接字连接,但由于某种原因无法正常工作。
第一个
from("netty4:tcp://SERVER:PORT?decoder=#packet-decoder&encoder=#packet-encoder&clientMode=true")
.to("seda:inbound")
第二个:
from("seda:dispatch")
.to("netty4:tcp://SERVER:PORT?decoder=#packet-decoder&encoder=#packet-encoder&sync=true&reuseChannel=true")
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
logger.info("Packet received: " + exchange.getIn().getBody());
}
});
请注意,第一个(“from”)配置为客户端,第二个(“to”)本质上是客户端。
即使我在第二个中使用了reuseChannel,并且正在调用“PacketEncoder”编码方法,也没有抛出异常,也没有发送数据。
public class PacketEncoder extends MessageToByteEncoder<Packet> {
public PacketEncoder() {
}
@Override
protected void encode(ChannelHandlerContext ctx, Packet packet, ByteBuf out) throws Exception {
out.writeBytes(PacketUtil.convertPacketToBytes(packet, true));
}
}
最后,在第二条路由中,“to”端点之后的处理器永远不会被调用。以下内容卡在 NettyProducer 中的某个地方。
我做错了什么?
【问题讨论】:
标签: sockets synchronization apache-camel netty