code: @Override
      protected void doStart() throws Exception {
          super.doStart();
          executorService = getEndpoint().getCamelContext().getExecutorServiceManager().newDefaultScheduledThreadPool(this, "executor");
          cloudClient.addCloudClientListener(this);
          getEndpoint().getCamelContext().addStartupListener(new StartupListener() {
              @Override
              public void onCamelContextStarted(CamelContext context, boolean alreadyStarted) throws Exception {
                  executorService.schedule(new Runnable() {
                      @Override
                      public void run() {
                          try {
                              cloudClient.subscribe(getEndpoint().getTopic(), 0);
                          } catch (KuraException e) {
                              throw new RuntimeException(e);
                          }
                      }
                  }, 5, TimeUnit.SECONDS);
              }
          });
          log.debug("Starting CloudClientListener.");
      }
docs: Life-cycle