【问题标题】:Instrumenting OkHttpClient检测 OkHttpClient
【发布时间】:2015-07-18 03:02:01
【问题描述】:

我正在编写一个小型包装库,它允许我使用 Dropwizard Metrics 监控 OkHttpClient 的内部:https://github.com/raskasa/metrics-okhttp。

我在正确检测 ConnectionPool 时遇到了一些问题 - 具体来说,定期调用 getConnectionCount() 来监控打开的 TCP 连接的数量。

当 OkHttpClient 的实例最初被创建时,getConnectionPool() 为空 - 这是我所期待的。但是,即使在执行某些网络请求期间/之后,后续访问池的尝试仍会返回 null。

我假设有适当的方法来监控 ConnectionPool,因为它是公共 API 的一部分,但我现在看不清楚。

所以:

  • 有没有办法在OkHttpClient.getConnectionPool() 不是null 的地方访问ConnectionPool?
  • 如果这不是最好的方法,有什么建议可以更好地解决这个问题吗?

【问题讨论】:

    标签: okhttp codahale-metrics


    【解决方案1】:

    试试这个:

    OkHttpClient client = ...
    client.setConnectionPool(ConnectionPool.getDefault());
    

    无论如何,这将为您提供相同的连接池,但它会更快地为您提供。

    【讨论】:

    • 谢谢!正是我需要的。 ConnectionPool 单元测试是否友好?具体来说,如何尽快清理池以处理单元测试中的时间问题?如果您不能提供完整的答案,那么为我自己的研究指出一个适当的起点也会有所帮助。
    • 是的,这一切都可以测试。
    猜你喜欢
    • 2020-07-08
    • 2016-06-05
    • 2014-03-04
    • 1970-01-01
    • 2018-03-07
    • 2017-06-11
    • 2015-05-17
    • 1970-01-01
    相关资源
    最近更新 更多