if (reply != null) {
Address replyTo = replyToAddressCallback.getReplyToAddress(receiveMessage, reply);
Message replyMessage = RabbitTemplate.this.convertMessageIfNecessary(reply);
MessageProperties receiveMessageProperties = receiveMessage.getMessageProperties();
MessageProperties replyMessageProperties = replyMessage.getMessageProperties();
Object correlation = RabbitTemplate.this.correlationKey == null
? receiveMessageProperties.getCorrelationId()
: receiveMessageProperties.getHeaders().get(RabbitTemplate.this.correlationKey);
if (RabbitTemplate.this.correlationKey == null || correlation == null) {
// using standard correlationId property
if (correlation == null) {
String messageId = receiveMessageProperties.getMessageId();
if (messageId != null) {
correlation = messageId.getBytes(RabbitTemplate.this.encoding);
}
}
replyMessageProperties.setCorrelationId((byte[]) correlation);
}
else {
replyMessageProperties.setHeader(RabbitTemplate.this.correlationKey, correlation);
}
// 'doSend()' takes care about 'channel.txCommit()'.
RabbitTemplate.this.doSend(channel, replyTo.getExchangeName(), replyTo.getRoutingKey(), replyMessage, null);
}