code: synchronized void destroy() throws Throwable {
          if (controller != null) {
              controller.stop();
              controller = null;
          }
          if (shutdownThread != null) {
              Runtime.getRuntime().removeShutdownHook(shutdownThread);
              shutdownThread = null;
          }
          if (canalMQProducer != null && canalMQStarter != null) {
              canalMQStarter.destroy();
              canalMQStarter = null;
              canalMQProducer = null;
          }
      }
docs: 销毁方法，远程配置变更时调用
  
  @throws Throwable