code: @Override
      public void closeConnection(RpcClient rpcClient, ClientTransportConfig transportConfig, Url url) {
          if (rpcClient == null || transportConfig == null || url == null) {
              return;
          }
          // 先删除
          Connection connection = urlConnectionMap.remove(transportConfig);
          if (connection == null) {
              return;
          }
          // 再判断是否需要关闭
          boolean needDestroy;
          AtomicInteger integer = connectionRefCounter.get(connection);
          if (integer == null) {
              needDestroy = true;
          } else {
              // 当前连接引用数
              int currentCount = integer.decrementAndGet();
              if (LOGGER.isDebugEnabled()) {
                  LOGGER.debug("Client transport {} of {} , current ref count is: {}", url.toString(),
                      NetUtils.channelToString(connection.getLocalAddress(), connection.getRemoteAddress()),
                      currentCount);
              }
              if (currentCount <= 0) {
                  // 此长连接无任何引用，可以销毁
                  connectionRefCounter.remove(connection);
                  needDestroy = true;
              } else {
                  needDestroy = false;
              }
          }
          if (needDestroy) {
              rpcClient.closeStandaloneConnection(connection);
          }
      }
docs: 关闭长连接
  
  @param rpcClient       bolt客户端
  @param transportConfig 传输层配置
  @param url             传输层地址