骆驼休息路线不返回异常状态代码

jok*_*arl 4 java apache-camel

我使用以下异常处理创建了一条骆驼路线:

onException(BadRequestException.class)
    .handled(true)
    .process(exchange -> {
        System.out.println("Reached processor");
        System.out.println(exchange.getIn().getBody(String.class));
    })
    .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(HttpStatus.BAD_REQUEST));
Run Code Online (Sandbox Code Playgroud)

我请求 http://localhost:8080/services/rest/endpoint?key=value

在 bean 中,我有一些验证表明需要两个查询参数,key并且keyTwo. keyTwo不存在,所以我抛出一个BadRequestException

public void assertRequiredParametersPresentOnExchange() throws BadRequestException {
    try {
        requiredParameters.stream()
            .forEach(p -> assertNotNull(p));
    } catch (IllegalArgumentException e) {
        throw new BadRequestException(e.getMessage());
    }
}
Run Code Online (Sandbox Code Playgroud)

当我执行 URL 时,我可以看到Reached processor上面异常处理程序的输出,但没有任何反应。邮递员等待回复约 60 秒,然后给我状态代码 23。

我在这里缺少什么?环保部?在交易所设置一些属性?

Aku*_*our 6

似乎您正在获得 23 的枚举序数。您可以尝试替换枚举吗

org.apache.http.HttpStatus.SC_BAD_REQUEST 
Run Code Online (Sandbox Code Playgroud)

代替

org.springframework.http.HttpStatus.BAD_REQUEST
Run Code Online (Sandbox Code Playgroud)

看看它是否有什么不同