241.7. 完成频道后关闭

当用作服务器时,有时要在关闭频道时关闭该频道,例如:客户端转换已完成。
您可以通过直接设置 endpoint 选项 disconnect=true 来完成此操作。

但是,您也可以根据每个消息指示 Camel,如下所示:
要指示 Camel 关闭频道,您应该添加将键为 CamelNettyCloseChannelWhenComplete 的标头设置为布尔值 true
例如,以下示例将在将消息写回客户端后关闭频道:

from("netty4:tcp://0.0.0.0:8080").process(new Processor() {
    public void process(Exchange exchange) throws Exception {
        String body = exchange.getIn().getBody(String.class);
        exchange.getOut().setBody("Bye " + body);
        // some condition which determines if we should close
        if (close) {
            exchange.getOut().setHeader(NettyConstants.NETTY_CLOSE_CHANNEL_WHEN_COMPLETE, true);
        }
    }
});

添加自定义频道管道工厂以获得对创建的管道的完整控制