java - Spring Integration - 在消息中添加自定义 header

标签 java spring spring-integration spring-integration-http

我正在使用 Spring Integration 过滤器对传入的有效负载进行结构验证,如果验证失败,那么我想向原始消息添加一些自定义 header 。

过滤器代码如下:

@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;
}

}

但是 header 未填充在消息中。 无法看到下一个组件中添加的标题。 我在这里做错了什么。

最佳答案

您不能替换参数并期望将其传播到下一个组件; Java 不是这样工作的;您的新消息将被简单地丢弃。

使用服务激活器而不是过滤器并返回新消息,或返回 null,这是在该点结束流程的信号。

关于java - Spring Integration - 在消息中添加自定义 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60245630/

相关文章:

java - JDK for Eclipse(windows平台)

java - 使用 deploy 命令在 glassfish 上部署 maven 项目

java - 使用内存数据库在 Spring Boot 中进行集成测试

java - Spring Batch-集成复用组件

java - 使用 spring 集成 ftp 支持将文件从 ftp 服务器传输到另一个 ftp 服务器

Java Play 查询参数分隔符

java - 将缩略图添加到我的自定义适配器

java - 没有 JDBC 类型 : 1111 的方言映射

java - Spring @Component HttpGet 执行

java - 禁用@EnableAutoConfiguration