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.