Jms request/reply operations
This commit updates JmsMessagingTemplate to support the MessageRequestReplyOperation interface that provides synchronous request/reply operations. As JmsMessagingTemplate delegates everything under the scenes to JmsTemplate, the latter has been updated as well to offer such lower level operation. Issue: SPR-12037
This commit is contained in:
@@ -28,6 +28,7 @@ import org.springframework.messaging.converter.MessageConversionException;
|
||||
*
|
||||
* @author Mark Fisher
|
||||
* @author Rossen Stoyanchev
|
||||
* @author Stephane Nicoll
|
||||
* @since 4.0
|
||||
*/
|
||||
public abstract class AbstractMessagingTemplate<D> extends AbstractMessageReceivingTemplate<D>
|
||||
@@ -76,20 +77,7 @@ public abstract class AbstractMessagingTemplate<D> extends AbstractMessageReceiv
|
||||
public <T> T convertSendAndReceive(D destination, Object request, Map<String, Object> headers,
|
||||
Class<T> targetClass, MessagePostProcessor postProcessor) {
|
||||
|
||||
MessageHeaders messageHeaders = (headers != null ? new MessageHeaders(headers) : null);
|
||||
Message<?> requestMessage = getMessageConverter().toMessage(request, messageHeaders);
|
||||
|
||||
if (requestMessage == null) {
|
||||
String payloadType = (request != null ? request.getClass().getName() : null);
|
||||
Object contentType = (messageHeaders != null ? messageHeaders.get(MessageHeaders.CONTENT_TYPE) : null);
|
||||
throw new MessageConversionException("Unable to convert payload with type '" + payloadType +
|
||||
"', contentType='" + contentType + "', converter=[" + getMessageConverter() + "]");
|
||||
}
|
||||
|
||||
if (postProcessor != null) {
|
||||
requestMessage = postProcessor.postProcessMessage(requestMessage);
|
||||
}
|
||||
|
||||
Message<?> requestMessage = doConvert(request, headers, postProcessor);
|
||||
Message<?> replyMessage = sendAndReceive(destination, requestMessage);
|
||||
return (replyMessage != null ? (T) getMessageConverter().fromMessage(replyMessage, targetClass) : null);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user