How to remove header values ​​in spring integration using header filter?

I am using the integration header-enricher

in spring to add some information to the post header.

<int:header-enricher input-channel="inboundReqOutboundChannel"
        output-channel="validRequestChannel">
        <int:header name="original-payload" ref="messageCreator"
            method="reqHeaderEnricher"></int:header>
</int:header-enricher>

      

After the header is enriched, the request message is sent as shown below.

header-enricher --> channel --> jmsOutboundgateway

      

Then the message flow of the response looks like this.

    jms-message-driven-adapter --> service-activator --> channel --> 
header-filter --> channel --> from here to jmsOutboundgateway reply destination

      

Header filter in response message flow below

<int:header-filter input-channel="headerFilterChannel"
        header-names="original-payload" output-channel="responseOutChannel" />

      

But the reply message still has a header original-payload

even after transmission header-filter

.

header-filter

Do you need additional configuration for normal operation ?

Please point me to the right approach.

Thanks a lot for the suggestions!

Debug logs:

After the message passes the header filter in responseFlow:

header-filter -> intermediateRespOutChannel -> jmsOutboundAdapter -> to jmsOutBoundGateway

The header original-payload

is removed when the message passes intermediateRespOutChannel

after header-filter

.

2015-07-25 17:07:14,306 DEBUG [org.springframework.integration.channel.DirectChannel] preSend on channel 'headerFilterChannel', message: GenericMessage [payload=javax.xml.bind.JAXBElement@e7e6f9, headers={transaction_id=WSG91075596120150725170705797, sequenceNumber=1, sequenceSize=1, WsGwCorrelationID=5c57f681-9b08-4c6f-8bdb-c400dd5299a2, priority=4, jms_timestamp=1437824232246, uri=http://localhost:8082/OnlineSOAPBinding/soapui/OnlineReqSOAPBinding, ffp=AB, sendingsys=AB, jms_redelivered=false, OutboundRetroCorrelationKey=520a0ea3-465c-4b92-aa4c-ed32703aae5e, jms_replyTo=queue://PAI_RES_INTER_OUTQ, ws_soapAction=processRequest, original-payload=SomeValueFromRequest, id=d8af82e0-3555-0df9-7c8a-ce082c2e7ec7, jms_messageId=ID:01HW370406-53356-1437823659837-1:2948:1:1:1, receivingsys=SZ, timestamp=1437824233993}]
2015-07-25 17:07:14,306 DEBUG [org.springframework.integration.transformer.MessageTransformingHandler] org.springframework.integration.transformer.MessageTransformingHandler#2 received message: GenericMessage [payload=javax.xml.bind.JAXBElement@e7e6f9, headers={transaction_id=WSG91075596120150725170705797, sequenceNumber=1, sequenceSize=1, WsGwCorrelationID=5c57f681-9b08-4c6f-8bdb-c400dd5299a2, priority=4, jms_timestamp=1437824232246, uri=http://localhost:8082/OnlineSOAPBinding/soapui/OnlineReqSOAPBinding, ffp=AB, sendingsys=AB, jms_redelivered=false, OutboundRetroCorrelationKey=520a0ea3-465c-4b92-aa4c-ed32703aae5e, jms_replyTo=queue://PAI_RES_INTER_OUTQ, ws_soapAction=processRequest, original-payload=SomeValueFromRequest, id=d8af82e0-3555-0df9-7c8a-ce082c2e7ec7, jms_messageId=ID:01HW370406-53356-1437823659837-1:2948:1:1:1, receivingsys=SZ, timestamp=1437824233993}]
2015-07-25 17:07:14,306 DEBUG [org.springframework.integration.channel.DirectChannel] preSend on channel 'intermeddiateResponseOut', message: GenericMessage [payload=javax.xml.bind.JAXBElement@e7e6f9, headers={transaction_id=WSG91075596120150725170705797, sequenceNumber=1, sequenceSize=1, WsGwCorrelationID=5c57f681-9b08-4c6f-8bdb-c400dd5299a2, priority=4, jms_timestamp=1437824232246, uri=http://localhost:8082/OnlineSOAPBinding/soapui/OnlineReqSOAPBinding, ffp=AB, sendingsys=AB, jms_redelivered=false, OutboundRetroCorrelationKey=520a0ea3-465c-4b92-aa4c-ed32703aae5e, jms_replyTo=queue://PAI_RES_INTER_OUTQ, ws_soapAction=processRequest, id=af627505-55ca-854e-d2e8-1687fa5aca34, jms_messageId=ID:01HW370406-53356-1437823659837-1:2948:1:1:1, receivingsys=SZ, timestamp=1437824234306}]
2015-07-25 17:07:14,306 DEBUG [org.springframework.integration.jms.JmsSendingMessageHandler] org.springframework.integration.jms.JmsSendingMessageHandler#1 received message: GenericMessage [payload=javax.xml.bind.JAXBElement@e7e6f9, headers={transaction_id=WSG91075596120150725170705797, sequenceNumber=1, sequenceSize=1, WsGwCorrelationID=5c57f681-9b08-4c6f-8bdb-c400dd5299a2, priority=4, jms_timestamp=1437824232246, uri=http://localhost:8082/OnlineSOAPBinding/soapui/OnlineReqSOAPBinding, ffp=AB, sendingsys=AB, jms_redelivered=false, OutboundRetroCorrelationKey=520a0ea3-465c-4b92-aa4c-ed32703aae5e, jms_replyTo=queue://PAI_RES_INTER_OUTQ, ws_soapAction=processRequest, id=af627505-55ca-854e-d2e8-1687fa5aca34, jms_messageId=ID:01HW370406-53356-1437823659837-1:2948:1:1:1, receivingsys=SZ, timestamp=1437824234306}]
2015-07-25 17:07:14,309 DEBUG [org.springframework.integration.jms.DynamicJmsTemplate] Executing callback on JMS Session: ActiveMQSession {id=ID:01HW370406-59320-1437824218347-1:5:1,started=true}

      

On the downstream thread after jmsOutboundgateway the debug log is below

jmsOutboundGateway -> outboundResAggregatorChannel -> Aggregator -> channel ->

In outboundResAggregatorChannel

the header original-payload

added back

2015-07-25 17:07:14,561 DEBUG [org.springframework.integration.channel.DirectChannel] preSend on channel 'outboundResAggregatorChannel', message: GenericMessage [payload=javax.xml.bind.JAXBElement@9f7158, headers={transaction_id=WSG91075596120150725170705797, sequenceNumber=1, sequenceSize=1, WsGwCorrelationID=5c57f681-9b08-4c6f-8bdb-c400dd5299a2, priority=4, jms_timestamp=1437824234313, uri=http://localhost:8082/OnlineSOAPBinding/soapui/OnlineReqSOAPBinding, ffp=AB, sendingsys=AB, jms_redelivered=false, OutboundRetroCorrelationKey=520a0ea3-465c-4b92-aa4c-ed32703aae5e, jms_replyTo=queue://PAI_RES_INTER_OUTQ, ws_soapAction=processRequest, correlationId=3d09b492-c4d8-f314-b18d-85dd740ae944, original-payload=SomeValueFromRequest, id=d13a807a-8b89-92d2-5b08-5b767f86774a, jms_messageId=ID:01HW370406-59320-1437824218347-1:5:1:1:1, receivingsys=SZ, timestamp=1437824234561}]
2015-07-25 17:07:14,561 DEBUG [org.springframework.integration.aggregator.AggregatingMessageHandler] org.springframework.integration.aggregator.AggregatingMessageHandler#0 received message: GenericMessage [payload=javax.xml.bind.JAXBElement@9f7158, headers={transaction_id=WSG91075596120150725170705797, sequenceNumber=1, sequenceSize=1, WsGwCorrelationID=5c57f681-9b08-4c6f-8bdb-c400dd5299a2, priority=4, jms_timestamp=1437824234313, uri=http://localhost:8082/OnlineSOAPBinding/soapui/OnlineReqSOAPBinding, ffp=AB, sendingsys=AB, jms_redelivered=false, OutboundRetroCorrelationKey=520a0ea3-465c-4b92-aa4c-ed32703aae5e, jms_replyTo=queue://PAI_RES_INTER_OUTQ, ws_soapAction=processRequest, correlationId=3d09b492-c4d8-f314-b18d-85dd740ae944, original-payload=SomeValueFromRequest, id=d13a807a-8b89-92d2-5b08-5b767f86774a, jms_messageId=ID:01HW370406-59320-1437824218347-1:5:1:1:1, receivingsys=SZ, timestamp=1437824234561}]

      

+3


source to share


1 answer


Well it doesn't work. Just because it is Gateway

. So it jmsOutboundgateway

knows nothing about the thread on the other side and it really doesn't care. You just need to have it reply

from there, transfer it to a message and send it to reply-channel

.

And the main word is here wrap

. Having the header original-payload

in requestMessage

, any gateway implementation passes them not only to this downstream stream (if the protocol supports it, of course), but also to replyMessage

- AbstractReplyProducingMessageHandler

:

@Override
protected final void handleMessageInternal(Message<?> message) {
    Object result;
....
    result = handleRequestMessage(message);
....
    sendOutputs(result, message);
}

....
if (this.shouldCopyRequestHeaders()) {
    builder.copyHeadersIfAbsent(requestHeaders);
}   

      



Etc.

So, for your case, you should move (or copy?) <int:header-filter>

Yours to the downstream stream on reply-channel

.

+1


source







All Articles