Spring 集成 - 在消息中添加自定义 headers
Spring Integration - Adding custom headers in Message
我正在使用 Spring 集成过滤器对传入的有效负载进行结构验证,如果验证失败,那么我想向原始消息添加一些自定义 headers。
过滤器代码如下:
@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;
}
}
但是 headers 没有填充到消息中。
看不到下一个组件中添加的 headers。
我在这里做错了什么。
您不能替换参数并期望它传播到下一个组件; Java 这样不行;您的新消息被简单地丢弃了。
使用服务激活器而不是过滤器和 return 新消息,或 null
这是在该点结束流的信号。
我正在使用 Spring 集成过滤器对传入的有效负载进行结构验证,如果验证失败,那么我想向原始消息添加一些自定义 headers。
过滤器代码如下:
@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;
}
}
但是 headers 没有填充到消息中。 看不到下一个组件中添加的 headers。 我在这里做错了什么。
您不能替换参数并期望它传播到下一个组件; Java 这样不行;您的新消息被简单地丢弃了。
使用服务激活器而不是过滤器和 return 新消息,或 null
这是在该点结束流的信号。