JmsSendingMessageHandler only writes history when enabled (implements TrackableComponent)
This commit is contained in:
@@ -22,23 +22,23 @@ import org.springframework.core.Ordered;
|
||||
import org.springframework.integration.Message;
|
||||
import org.springframework.integration.core.MessageHandler;
|
||||
import org.springframework.integration.history.MessageHistory;
|
||||
import org.springframework.integration.history.TrackableComponent;
|
||||
import org.springframework.jms.core.JmsTemplate;
|
||||
import org.springframework.jms.core.MessagePostProcessor;
|
||||
|
||||
/**
|
||||
* A MessageConsumer that sends the converted Message payload within
|
||||
* a JMS Message.
|
||||
* A MessageConsumer that sends the converted Message payload within a JMS Message.
|
||||
*
|
||||
* @author Mark Fisher
|
||||
* @author Oleg Zhurakousky
|
||||
*/
|
||||
public class JmsSendingMessageHandler extends AbstractJmsTemplateBasedAdapter implements MessageHandler, Ordered {
|
||||
public class JmsSendingMessageHandler extends AbstractJmsTemplateBasedAdapter implements MessageHandler, TrackableComponent, Ordered {
|
||||
|
||||
private volatile int order = Ordered.LOWEST_PRECEDENCE;
|
||||
|
||||
public String getComponentType(){
|
||||
return "jms:outbound-channel-adapter";
|
||||
}
|
||||
private volatile boolean shouldTrack;
|
||||
|
||||
|
||||
public JmsSendingMessageHandler(JmsTemplate jmsTemplate) {
|
||||
super(jmsTemplate);
|
||||
}
|
||||
@@ -51,6 +51,14 @@ public class JmsSendingMessageHandler extends AbstractJmsTemplateBasedAdapter im
|
||||
super();
|
||||
}
|
||||
|
||||
public void setShouldTrack(boolean shouldTrack) {
|
||||
this.shouldTrack = shouldTrack;
|
||||
}
|
||||
|
||||
public String getComponentType() {
|
||||
return "jms:outbound-channel-adapter";
|
||||
}
|
||||
|
||||
public void setOrder(int order) {
|
||||
this.order = order;
|
||||
}
|
||||
@@ -63,17 +71,17 @@ public class JmsSendingMessageHandler extends AbstractJmsTemplateBasedAdapter im
|
||||
if (message == null) {
|
||||
throw new IllegalArgumentException("message must not be null");
|
||||
}
|
||||
final Message<?> messageToSend = MessageHistory.write(message, this);
|
||||
final Message<?> messageToSend = (this.shouldTrack) ? MessageHistory.write(message, this) : message;
|
||||
Object objectToSend = messageToSend;
|
||||
if (this.shouldExtractPayload()){
|
||||
if (this.shouldExtractPayload()) {
|
||||
objectToSend = messageToSend.getPayload();
|
||||
}
|
||||
this.getJmsTemplate().convertAndSend(objectToSend, new MessagePostProcessor() {
|
||||
public javax.jms.Message postProcessMessage(javax.jms.Message jmsMessage)
|
||||
throws JMSException {
|
||||
public javax.jms.Message postProcessMessage(javax.jms.Message jmsMessage) throws JMSException {
|
||||
getHeaderMapper().fromHeaders(messageToSend.getHeaders(), jmsMessage);
|
||||
return jmsMessage;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user