vipulk10
vipulk10

Reputation: 119

Header values getting lost spring integration

Im using header enricher which uses existing headers to set a value of new header. However existing header information is lost and only 3 header remain ie request-id,timestamp and raw-body.

public String vipul(Message<String> message) {
    MessageHeaders messageHeaders  =message.getHeaders();
    if (messageHeaders.containsKey("x-death")) {
        List<HashMap<String, Object>> deathList = (List<HashMap<String, Object>>) messageHeaders
                .get("x-death");
        //logger.debug(message.get("messageId")+" "+deathList);
        if (deathList.size() > 0) {
            HashMap<String, Object> death = deathList.get(0);
            if (death.containsKey("original-expiration")) {
                return (String) death.get("original-expiration");
                //logger.info(messageHeaders.get("messageId")+" original-expiration = "+death.get("original-expiration"));
            } 
        } 
    } else {
        return null;
    }
    return "";
}

In this messageHeaders map has only has 3 keys and not all the header keys which are normally there. I need to make a retry system using original expiration .

MY spring integration xml has following snippet :

<int:header-enricher input-channel="fromPushAppointmentErrorHandler1"
         output-channel="fromPushAppointmentErrorHandler">
     <int:header name="original_expiration" method="vipul" ref="errorhelper"/> 
</int:header-enricher>

Upvotes: 0

Views: 393

Answers (1)

Artem Bilan
Artem Bilan

Reputation: 121177

First of all it looks like you also need an overwrite="true" for that <int:header name="original_expiration"> since the logic in your vipul() is about to produce a new value for existing header and that is not going to happen since the value is already there in headers.

The fact that you are missing some headers in this your logic might be dictated by some upstream <transformer> which returns the whole Message without copying request headers.

Upvotes: 1

Related Questions