Uploaded image for project: 'Spring Integration'
  1. Spring Integration
  2. INT-4317

JMSDeliveryMode and JMSExpiration headers coming from Upstream applications are defaulted in Spring

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Minor
    • Resolution: Complete
    • Affects Version/s: 4.3.11
    • Fix Version/s: 5.1 RC1
    • Component/s: JMS Support
    • Labels:
    • Environment:
      Linux version 3.10.0, Red Hat 4.8.3-9, 64-bit OS

      Description

      Spring's DefaultJmsHeaderMapper is missing the mappers for the JMS headers JMSDeliveryMode and JMSExpiration. The incoming message from upstream application has the values for JMSDeliveryMode and JMSExpiration. But when sending it out to the destination using the JMS Outbound Channel Adapter, these 2 header values are defaulted by Spring.

      On further debugging, The JMS Outbound Adapter/Gateway uses the DynamicJMSTemplate for sending messages; in turn it uses the DynamicJmsTemplateProperties for setting the priority. I don't see any fields for adding/retrieving the deliveryMode or expiration in the DynamicJMSTemplate or in the DynamicJmsTemplateProperties. This will in-turn override the JMSDeliveryMode and JMSExpiration even if the mappers are added.

      The fix needed to be applied on JmsSendingMessageHandler too where the priority is added from message header using IntegrationMessageHeaderAccessor. Similar approach is needed for the DeliveryMode and Expiration.

        Attachments

          Activity

            People

            Assignee:
            abilan Artem Bilan
            Reporter:
            m.k.selvakumar Selva Kumar
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: