Reuse JmsTemplate's MessageConverter in JmsMessagingTemplate
This commit makes sure that any custom MessageConverter set in a JmsTemplate used by a JmsMessagingTemplate is reused as the payload converter of the message. Issue: SPR-15965
This commit is contained in:
@@ -52,6 +52,8 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
|
||||
|
||||
private MessageConverter jmsMessageConverter = new MessagingMessageConverter();
|
||||
|
||||
private boolean converterSet;
|
||||
|
||||
@Nullable
|
||||
private String defaultDestinationName;
|
||||
|
||||
@@ -131,6 +133,7 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
|
||||
public void setJmsMessageConverter(MessageConverter jmsMessageConverter) {
|
||||
Assert.notNull(jmsMessageConverter, "MessageConverter must not be null");
|
||||
this.jmsMessageConverter = jmsMessageConverter;
|
||||
this.converterSet = true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -162,6 +165,10 @@ public class JmsMessagingTemplate extends AbstractMessagingTemplate<Destination>
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
Assert.notNull(this.jmsTemplate, "Property 'connectionFactory' or 'jmsTemplate' is required");
|
||||
if (!this.converterSet && this.jmsTemplate.getMessageConverter() != null) {
|
||||
((MessagingMessageConverter) this.jmsMessageConverter)
|
||||
.setPayloadConverter(this.jmsTemplate.getMessageConverter());
|
||||
}
|
||||
}
|
||||
|
||||
private JmsTemplate obtainJmsTemplate() {
|
||||
|
||||
@@ -55,6 +55,15 @@ public class MessagingMessageConverter implements MessageConverter, Initializing
|
||||
this(new SimpleMessageConverter(), new SimpleJmsHeaderMapper());
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance with the specific payload converter.
|
||||
* @param payloadConverter the payload converter to use
|
||||
* @since 4.3.12
|
||||
*/
|
||||
public MessagingMessageConverter(MessageConverter payloadConverter) {
|
||||
this(payloadConverter, new SimpleJmsHeaderMapper());
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance with the specified payload converter and
|
||||
* header mapper.
|
||||
|
||||
Reference in New Issue
Block a user