The ActiveMQ/JMS component documenation generated from the JMSComponent#setTransferExchange javadoc states:
You can transfer the exchange over the wire instead of just the body and headers.
The following fields are transferred: In body, Out body, Fault body, In headers, Out headers, Fault headers, exchange properties, exchange exception.
But exchange properties are not transfered.
I debuged into this and noticed that JMSBinding#createJmsMessage calls DefaultExchangeHolder.marshal(exchange, false, endpoint.isAllowSerializedHeaders()) when transferExchange is true. The false parameter is the reason that the exchange properties are not included in the JMS message.
This should either be fixed or the documentation should be updated.