更改apachecamel的http响应和body响应



我有两条路线:

<route id="test1">
<from uri="direct:start" />
<setProperty propertyName="id">
<simple>${header._id}</simple>
</setProperty>
<setBody>
<simple>${in.headers._id}</simple>
</setBody>                  
<convertBodyTo type="java.lang.String" />
<log logName="test" message="id : ${body}" />
<to uri="file://inbox"/>
</route>
<route id="tesst" streamCache="true">
<from uri="file://inbox" />
<convertBodyTo type="java.lang.String" />
<log logName="test"
message="from inbox: ${body}" />
<setProperty propertyName="test">
<simple>${body}</simple>
</setProperty>
<to
uri="sql: SELECT blabla FROM blabla WHERE test = :#${property.test}" />
<setProperty propertyName="result">
<simple>${body}</simple>
</setProperty>
<choice>
<when>
<simple>${property.result} != ""</simple>
<log logName="test"
message="call procedure.." />
<to uri="sql: CALL public.sp_test(:#${property.test})" />
</when>
<otherwise>
<log logName="test" message="Data not found!" />
<setHeader headerName="Exchange.HTTP_RESPONSE_CODE">
<constant>404</constant>
</setHeader>
<camel:setBody>
<simple resultType="java.lang.String">Data not found!</simple>
</camel:setBody>
</otherwise>
</choice>
</route>

当我插入错误的数据时,我得到的http响应仍然是200。我想在选择其他检查时进行一些验证后做出http响应404。我已经尝试过setheader、setheaderrout,但都不起作用。我该怎么做?

@bedla在评论中提到,文件使用者(仅在消息传递中(无法发送响应。所以很难理解你的情况。

但是,如果使用Camel实现HTTP服务器(消费者;输入输出消息(,则可以将响应的HTTP状态代码设置为消息头

.setHeader(Exchange.HTTP_RESPONSE_CODE, constant(404))

最新更新