@Override
    protected void handleMessageInternal(Message<?> message) throws Exception {
      MessageValues messageToSend = serializePayloadIfNecessary(message);

      if (replyTo != null) {
        messageToSend.put(AmqpHeaders.REPLY_TO, this.replyTo);
      }
      if (this.partitioningMetadata.isPartitionedModule()) {
        messageToSend.put(PARTITION_HEADER, determinePartition(message, this.partitioningMetadata));
      }

      this.delegate.handleMessage(messageToSend.toMessage(getMessageBuilderFactory()));
    }
 @Override
 @SuppressWarnings("unchecked")
 protected Object handleRequestMessage(Message<?> requestMessage) {
   if (Mode.embeddedHeaders.equals(mode)) {
     MessageValues messageValues;
     try {
       messageValues =
           embeddedHeadersMessageConverter.extractHeaders(
               (Message<byte[]>) requestMessage, true);
     } catch (Exception e) {
       logger.error(EmbeddedHeadersMessageConverter.decodeExceptionMessage(requestMessage), e);
       messageValues = new MessageValues(requestMessage);
     }
     messageValues = deserializePayloadIfNecessary(messageValues);
     return MessageBuilder.createMessage(
         messageValues.getPayload(), new KafkaBinderHeaders(messageValues));
   } else {
     return requestMessage;
   }
 }