protected final void addStandardHeaders(
     TcpConnection connection, AbstractIntegrationMessageBuilder<?> messageBuilder) {
   String connectionId = connection.getConnectionId();
   messageBuilder
       .setHeader(IpHeaders.HOSTNAME, connection.getHostName())
       .setHeader(IpHeaders.IP_ADDRESS, connection.getHostAddress())
       .setHeader(IpHeaders.REMOTE_PORT, connection.getPort())
       .setHeader(IpHeaders.CONNECTION_ID, connectionId);
   if (this.applySequence) {
     messageBuilder
         .setCorrelationId(connectionId)
         .setSequenceNumber((int) connection.incrementAndGetConnectionSequence());
   }
 }
 @Override
 public Message<?> toMessage(String topic, MqttMessage mqttMessage) {
   try {
     AbstractIntegrationMessageBuilder<Object> messageBuilder =
         getMessageBuilderFactory()
             .withPayload(mqttBytesToPayload(mqttMessage))
             .setHeader(MqttHeaders.QOS, mqttMessage.getQos())
             .setHeader(MqttHeaders.DUPLICATE, mqttMessage.isDuplicate())
             .setHeader(MqttHeaders.RETAINED, mqttMessage.isRetained());
     if (topic != null) {
       messageBuilder.setHeader(MqttHeaders.TOPIC, topic);
     }
     return messageBuilder.build();
   } catch (Exception e) {
     throw new MessageConversionException("failed to convert object to Message", e);
   }
 }