Class EventListener

java.lang.Object
org.miaixz.bus.http.metric.EventListener

public abstract class EventListener extends Object
用于度量事件的侦听器。扩展这个类来监视应用程序的HTTP调用的数量、大小和持续时间 所有事件方法必须快速执行,不需要外部锁定,不能抛出异常,不能尝试更改事件参数, 也不能重入客户机。任何对文件或网络的IO写入都应该异步进行
Since:
Java 17+
Author:
Kimi Liu
  • Field Details

  • Constructor Details

    • EventListener

      public EventListener()
  • Method Details

    • factory

      public static EventListener.Factory factory(EventListener listener)
    • callStart

      public void callStart(NewCall call)
      在调用进入队列或由客户端执行时立即调用。在线程或流限制的情况下,这个调用可能在处理请求 开始之前就已经执行了 对于单个NewCall只调用一次。不同路由或重定向的重试将在 单个callStart和callEnd(org.miaixz.bus.http.NewCall)/callFailed(org.miaixz.bus.http.NewCall, java.io.IOException)对的范围内处理。
      Parameters:
      call - 调用信息
    • dnsStart

      public void dnsStart(NewCall call, String domainName)
      仅在DNS查找之前调用。看到#查找(String)
      Parameters:
      call - 调用信息
      domainName - 主机名
    • dnsEnd

      public void dnsEnd(NewCall call, String domainName, List<InetAddress> inetAddressList)
      在DNS查找后立即调用. 此方法在dnsStart(org.miaixz.bus.http.NewCall, java.lang.String)之后调用
      Parameters:
      call - 调用信息
      domainName - 主机名
      inetAddressList - IP地址信息
    • connectStart

      public void connectStart(NewCall call, InetSocketAddress inetSocketAddress, Proxy proxy)
      仅在初始化套接字连接之前调用. 如果不能重用ConnectionPool中的现有连接,则将调用此方法.
      Parameters:
      call - 调用信息
      inetSocketAddress - 网络套接字信息
      proxy - 代理
    • secureConnectStart

      public void secureConnectStart(NewCall call)
      在启动TLS连接之前调用.
      Parameters:
      call - 调用信息
    • secureConnectEnd

      public void secureConnectEnd(NewCall call, Handshake handshake)
      尝试TLS连接后立即调用. 此方法在secureConnectStart(org.miaixz.bus.http.NewCall)之后调用.
      Parameters:
      call - 调用信息
      handshake - 网络握手信息
    • connectEnd

      public void connectEnd(NewCall call, InetSocketAddress inetSocketAddress, Proxy proxy, org.miaixz.bus.core.net.Protocol protocol)
      在尝试套接字连接后立即调用.
      Parameters:
      call - 调用信息
      inetSocketAddress - 网络套接字信息
      proxy - 代理
      protocol - 协议
    • connectFailed

      public void connectFailed(NewCall call, InetSocketAddress inetSocketAddress, Proxy proxy, org.miaixz.bus.core.net.Protocol protocol, IOException ioe)
      连接尝试失败时调用。如果有进一步的路由可用并且启用了故障恢复,则此故障不是终端.
      Parameters:
      call - 调用信息
      inetSocketAddress - 网络套接字信息
      proxy - 代理
      protocol - 协议
      ioe - 异常
    • connectionAcquired

      public void connectionAcquired(NewCall call, Connection connection)
      call获取连接后调用.
      Parameters:
      call - 调用信息
      connection - 连接信息
    • connectionReleased

      public void connectionReleased(NewCall call, Connection connection)
      在为call释放连接后调用. 这个方法总是在connectionAcquired(NewCall, Connection)之后调用。
      Parameters:
      call - 调用信息
      connection - 连接信息
    • requestHeadersStart

      public void requestHeadersStart(NewCall call)
      仅在发送请求头之前调用. 连接是隐式的,通常与最后一个connectionAcquired(NewCall, Connection)事件相关
      Parameters:
      call - 调用信息
    • requestHeadersEnd

      public void requestHeadersEnd(NewCall call, Request request)
      发送请求头后立即调用. 这个方法总是在requestHeadersStart(NewCall)之后调用
      Parameters:
      call - 调用信息
      request - 通过网络发送的请求
    • requestBodyStart

      public void requestBodyStart(NewCall call)
      仅在发送请求主体之前调用。只有在请求允许并有一个请求体要发送时才会被调用吗. 连接是隐式的,通常与最后一个connectionAcquired(NewCall, Connection)事件相关
      Parameters:
      call - 调用信息
    • requestBodyEnd

      public void requestBodyEnd(NewCall call, long byteCount)
      在发送请求主体后立即调用 此方法总是在requestBodyStart(NewCall)之后调用
      Parameters:
      call - 调用信息
      byteCount - 字节流长度信息
    • requestFailed

      public void requestFailed(NewCall call, IOException ioe)
      当写入请求失败时调用 这个方法在requestHeadersStart(org.miaixz.bus.http.NewCall)requestBodyStart(org.miaixz.bus.http.NewCall)之后被调用
    • responseHeadersStart

      public void responseHeadersStart(NewCall call)
      仅在接收响应标头之前调用. 连接是隐式的,通常与最后一个connectionAcquired(NewCall, Connection)事件相关 对于单个NewCall可以调用多次。例如,如果对NewCall.request()的响应是重定向到另一个地址
      Parameters:
      call - 调用信息
    • responseHeadersEnd

      public void responseHeadersEnd(NewCall call, Response response)
      在接收响应标头后立即调用 这个方法总是在responseHeadersStart(org.miaixz.bus.http.NewCall)之后调用
      Parameters:
      call - 调用信息
      response - 通过网络接收到的响应
    • responseBodyStart

      public void responseBodyStart(NewCall call)
      仅在接收响应主体之前调用. 连接是隐式的,通常与最后一个connectionAcquired(NewCall, Connection)事件相关 对于单个NewCall通常只会调用一次,例外情况是一组有限的情况,包括故障恢复
      Parameters:
      call - 调用信息
    • responseBodyEnd

      public void responseBodyEnd(NewCall call, long byteCount)
      在接收到响应体并完成读取后立即调用. 只会在有响应体的请求时调用,例如,不会在websocket升级时调用 此方法总是在requestBodyStart(NewCall)之后调用
      Parameters:
      call - 调用信息
      byteCount - 字节流长度信息
    • responseFailed

      public void responseFailed(NewCall call, IOException ioe)
      当读取响应失败时调用 这个方法在responseHeadersStart(org.miaixz.bus.http.NewCall)responseBodyStart(org.miaixz.bus.http.NewCall)之后被调用
    • callEnd

      public void callEnd(NewCall call)
      在调用完全结束后立即调用。这包括调用方延迟消耗响应体. 此方法总是在callStart(NewCall)之后调用
      Parameters:
      call - 调用信息
    • callFailed

      public void callFailed(NewCall call, IOException ioe)
      永久失败时调用. 此方法总是在callStart(NewCall)之后调用
      Parameters:
      call - 调用信息
      ioe - 异常