如何从环形Web应用程序使用“ clj-http”连接池?

时间:2018-07-07 21:47:42

标签: clojure connection-pooling clj-http

我正在使用clojure Web应用程序作为代理Web服务器。

我所有的请求都进入这个Clojure Ring Web应用程序,然后我使用clj-http将请求发送到最终目的地。

因此,到目前为止,我只是作为一个简单的解决方案而工作,只需为每个请求调用clj-http/requestThis code is extremely similar to what I am doing

但这还不够好,因为每次发出请求时,都会初始化一个新的http客户端。我需要连接池,以便可以正确重用HTTP客户端。

clj-http documentation about persistent connections指出您重复使用这样的连接:

(with-connection-pool {:timeout 5 :threads 4 :insecure? false :default-per-route 10}
  (get "http://example.org/1")
  (post "http://example.org/2")
  (get "http://example.org/3")
  ...
  (get "http://example.org/999"))

也许我对clojure还不够好,但是有人会用这个连接池包围所有进入https://github.com/tailrecursion/ring-proxy/blob/master/src/tailrecursion/ring_proxy.clj#L40的请求吗?

1 个答案:

答案 0 :(得分:2)

实现将连接管理器添加到请求映射中的中间件。

您将需要自己处理连接管理器的生命周期,而不是使用表单-请参阅clj-http文档中有关持久连接的最后一部分。