You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Camel 3.8 Netty消费端未等路由处理完成提前返回空响应如何解决

问题根因

你遇到的15ms提前返回空响应的问题,是Apache Camel Netty组件的requestTimeout参数默认值为15毫秒导致的:超时后Netty会直接截断业务流程,返回空响应,不会等待自定义逻辑执行完成。

解决方案

修改路由中的Netty配置,新增requestTimeout参数,设置为大于你业务最长处理耗时的数值(单位为毫秒,示例中设置为60000即1分钟)。同时建议在处理方法中显式设置响应体,避免默认取值异常。

修改后路由代码

fromF("netty:tcp://%s:%d?sync=true&synchronous=true&disconnectOnNoReply=false&connectTimeout=100000&requestTimeout=60000", host, receivePort)
    .bean(HL7Request.class, "process", BeanScope.Request);

优化后process方法代码

public void process(Exchange exchange) throws Exception {
    try {
        exchange.setException(null);
        Thread.sleep(5000);
        String content = exchange.getMessage().getBody(String.class);
        System.out.println(content);
        // 显式设置响应体内容,确保返回的是预期值
        exchange.getMessage().setBody(content);
    } catch (Exception e) {
        exchange.setException(e);
    }
}

验证

修改完成后重启服务,使用PacketSender发送测试请求,等待5秒后即可收到携带预期内容的响应,不会再出现提前返回空响应的问题。

内容的提问来源于stack exchange,提问作者Florian H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 00:36:04