List of usage examples for org.springframework.integration.jms DefaultJmsHeaderMapper DefaultJmsHeaderMapper
DefaultJmsHeaderMapper
From source file:org.springframework.cloud.stream.binder.jms.utils.RepublishMessageRecoverer.java
@Override public void recover(Message undeliveredMessage, Throwable cause) { String deadLetterQueueName = queueProvisioner.provisionDeadLetterQueue(); final JmsHeaderMapper mapper = new DefaultJmsHeaderMapper(); MessageConverter converter = new SimpleMessageConverter(); Object payload = null;// w ww .j a v a2 s.c o m try { payload = converter.fromMessage(undeliveredMessage); } catch (JMSException e) { logger.error("The message payload could not be retrieved. It will be lost.", e); } final Map<String, Object> headers = mapper.toHeaders(undeliveredMessage); headers.put(X_EXCEPTION_STACKTRACE, getStackTraceAsString(cause)); headers.put(X_EXCEPTION_MESSAGE, cause.getCause() != null ? cause.getCause().getMessage() : cause.getMessage()); try { headers.put(X_ORIGINAL_QUEUE, undeliveredMessage.getJMSDestination().toString()); } catch (JMSException e) { logger.error("The message destination could not be retrieved", e); } Map<? extends String, ? extends Object> additionalHeaders = additionalHeaders(undeliveredMessage, cause); if (additionalHeaders != null) { headers.putAll(additionalHeaders); } jmsTemplate.convertAndSend(deadLetterQueueName, payload, new MessagePostProcessor() { @Override public Message postProcessMessage(Message message) throws JMSException { mapper.fromHeaders(new MessageHeaders(headers), message); return message; } }); }