JmsSendingMessageHandler only writes history when enabled (implements TrackableComponent)

This commit is contained in:
Mark Fisher
2010-09-02 20:54:54 +00:00
parent 01e3ae539b
commit ef865521f8

View File

@@ -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;
}
});
}
}