我正在使用SpringIntegrationfilter对传入的有效负载进行结构验证,如果验证失败,那么我想在原始消息中添加一些自定义头。
过滤器代码如下:
@Service("structureValidationFilter")
public class StructureValidationFilter implements MessageSelector {
@Override
public boolean accept(Message<?> message) {
// TODO Auto-generated method stub
boolean status=true;
if(message.getPayload() instanceof CFKRequestBody) {
CFKRequestBody body=(CFKRequestBody)message.getPayload();
if(!body.getInitiatingPartyId().equalsIgnoreCase("BPKV")) {
message = MutableMessageBuilder.fromMessage(message).
setHeader("BPKV_ERROR_CODE", "Ïnvalid Initiating part id").
setHeader("HTTP_STATUS", "400").build();
return false;
}
}
return status;
}
}
但是头没有填充到消息中。看不到添加到下一个组件中的头。我在这里做错了什么。
2条答案
按热度按时间zkure5ic1#
您不能替换一个参数并期望它被传播到下一个组件; Java不是这样工作的;则简单地丢弃你的新消息。
使用服务激活器而不是过滤器,并返回新消息,或者
null
,这是在该点结束流的信号。xqkwcwgp2#
您应该像这样将结果封装在Message中