code: private void onInternalMessageArrived(String deviceId, String appTopic, KuraPayload message, int qos, boolean retain,
                                            boolean control) {
          log.debug("Received message with deviceId {}, application topic {}.", deviceId, appTopic);
          Exchange exchange = anExchange(getEndpoint().getCamelContext()).withBody(message)
                  .withHeader(CAMEL_KURA_CLOUD_TOPIC, appTopic)
                  .withHeader(CAMEL_KURA_CLOUD_DEVICEID, deviceId)
                  .withHeader(CAMEL_KURA_CLOUD_QOS, qos)
                  .withHeader(CAMEL_KURA_CLOUD_CONTROL, control)
                  .withHeader(CAMEL_KURA_CLOUD_RETAIN, retain).build();
          exchange.setFromEndpoint(getEndpoint());
          try {
              getProcessor().process(exchange);
          } catch (Exception e) {
              handleException("Error while processing an incoming message:", e);
          }
      }
docs: Helpers