Spring integration 无法从pojo设置相关id

Spring integration 无法从pojo设置相关id,spring-integration,Spring Integration,我可以使用标记设置相关id,但我想从POJO设置它。所以我试过了 <int:header-enricher id="he" input-channel="in" output-channel="test"> <int:correlation-id ref="heSimple" method="resolve" /> </int:header-enricher> 不知何故,问题似乎与发送消息时显式设置相关id有关。因此,在这种情况下,a1消息最终使用标

我可以使用
标记设置相关id,但我想从POJO设置它。所以我试过了

<int:header-enricher id="he" input-channel="in" output-channel="test">
    <int:correlation-id ref="heSimple" method="resolve" />
</int:header-enricher>
不知何故,问题似乎与发送消息时显式设置相关id有关。因此,在这种情况下,a1消息最终使用标头enricher设置新的相关id,但消息b2继续使用1作为相关id

查看调试日志,似乎a1消息被发送到transformer并调用标头enricher,但对于消息b2,标头enricher未被调用

[11:44:23:052] [main] DEBUG o.s.i.t.MessageTransformingHandler - org.springframework.integration.transformer.MessageTransformingHandler#0 received message:    [Payload=a1][Headers={timestamp=1399045463050, id=d20d68e1-ea7a-df20-4faf-d1864855851c}] 
in hesimple for [Payload=a1][Headers={timestamp=1399045463050, id=d20d68e1-ea7a-df20-4faf-d1864855851c}]
[11:44:23:055] [main] DEBUG o.s.i.t.MessageTransformingHandler - handler 'org.springframework.integration.transformer.MessageTransformingHandler#0' sending reply Message: [Payload=a1][Headers={timestamp=1399045463055, id=3b72891c-aaa5-3570-7715-e020529b5f83, correlationId=test}] 
对于消息b1,已跳过标头充实器

[11:44:23:056] [main] DEBUG o.s.i.t.MessageTransformingHandler - org.springframework.integration.transformer.MessageTransformingHandler#0 received message: [Payload=b1][Headers={timestamp=1399045463055, id=9aa2bb7e-9c6c-66e5-0d64-3afea4a57ee4, correlationId=1}] 
[11:44:23:056] [main] DEBUG o.s.i.t.MessageTransformingHandler - handler 'org.springframework.integration.transformer.MessageTransformingHandler#0' sending reply Message: [Payload=b1][Headers={timestamp=1399045463056, id=c8d54223-e506-727d-6bff-703755017403, correlationId=1}] 
标题enricher中没有太多内容

public static class HESimple {
    public String resolve(Message<String> message){
        System.out.println("in hesimple for " + message);
        return "test";
    }
}
公共静态类HESimple{
公共字符串解析(消息){
System.out.println(“in-hesimple表示“+消息”);
返回“测试”;
}
}

我刚刚测试了第一个案例,对我来说效果很好

您使用的是哪个版本的Spring Integration

方法的签名是什么

该标题没有任何“特殊”之处会导致您描述的不同行为。我建议您打开调试日志以了解发生了什么

编辑:


为了覆盖现有值,您需要设置
overwrite=“true”

您需要
overwrite=“true”
来替换现有值。我想我应该更多地了解header enricher xml中可用的选项。不管怎样,还是一如既往地谢谢你。你和其他spring集成人员的帮助真是太大了。
[11:44:23:052] [main] DEBUG o.s.i.t.MessageTransformingHandler - org.springframework.integration.transformer.MessageTransformingHandler#0 received message:    [Payload=a1][Headers={timestamp=1399045463050, id=d20d68e1-ea7a-df20-4faf-d1864855851c}] 
in hesimple for [Payload=a1][Headers={timestamp=1399045463050, id=d20d68e1-ea7a-df20-4faf-d1864855851c}]
[11:44:23:055] [main] DEBUG o.s.i.t.MessageTransformingHandler - handler 'org.springframework.integration.transformer.MessageTransformingHandler#0' sending reply Message: [Payload=a1][Headers={timestamp=1399045463055, id=3b72891c-aaa5-3570-7715-e020529b5f83, correlationId=test}] 
[11:44:23:056] [main] DEBUG o.s.i.t.MessageTransformingHandler - org.springframework.integration.transformer.MessageTransformingHandler#0 received message: [Payload=b1][Headers={timestamp=1399045463055, id=9aa2bb7e-9c6c-66e5-0d64-3afea4a57ee4, correlationId=1}] 
[11:44:23:056] [main] DEBUG o.s.i.t.MessageTransformingHandler - handler 'org.springframework.integration.transformer.MessageTransformingHandler#0' sending reply Message: [Payload=b1][Headers={timestamp=1399045463056, id=c8d54223-e506-727d-6bff-703755017403, correlationId=1}] 
public static class HESimple {
    public String resolve(Message<String> message){
        System.out.println("in hesimple for " + message);
        return "test";
    }
}