docs: private Boolean termin(Long channelId, final TerminType type) throws Exception {
          Channel channel = ArbitrateConfigUtils.getChannelByChannelId(channelId);
          List<Pipeline> pipelines = channel.getPipelines();
          List<Future<Boolean>> futures = new ArrayList<Future<Boolean>>();
          for (final Pipeline pipeline : pipelines) {
              futures.add(arbitrateExecutor.submit(new Callable<Boolean>() {
  
                  public Boolean call() {
                      TerminEventData data = new TerminEventData();
                      data.setPipelineId(pipeline.getId());
                      data.setType(type);
                      data.setCode("channel");
                      data.setDesc(type.toString());
                      return errorTerminProcess.process(data); // 处理关闭
                  }
              }));
  
          }
  
          boolean result = false;
          Exception exception = null;
          int index = 0;
          for (Future<Boolean> future : futures) {
              try {
                  result |= future.get(); // 进行处理
              } catch (InterruptedException e) {
                  // ignore
                  Thread.currentThread().interrupt();
              } catch (ExecutionException e) {
                  sendWarningMessage(pipelines.get(index).getId(), e);
                  exception = e;
              }
  
              index++;
          }
  
          if (exception != null) {
              throw exception;
          } else {
              return result;
          }
      }