Как использовать пул соединений `clj-http` из кольцевого веб-приложения?
Я использую веб-приложение clojure в качестве прокси-веб-сервера.
Все мои запросы поступают в это веб-приложение, поэтому я использую clj-http для отправки запроса в конечный пункт назначения.
Так что у меня это работает как наивное решение до сих пор, что просто вызывает clj-http/request
за каждый запрос. Этот код очень похож на то, что я делаю.
Но этого пока недостаточно, потому что каждый раз, когда делается запрос, инициализируется новый http-клиент. Мне нужен пул соединений, чтобы клиенты HTTP использовались правильно.
В документации clj-http о постоянных соединениях говорится, что вы повторно используете соединения следующим образом:
(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 ответ
Реализуйте промежуточное ПО, которое добавляет диспетчер соединений в карту запросов.
Вам нужно будет обрабатывать жизненный цикл диспетчера соединений самостоятельно, а не с помощью формы - см. Заключительную часть документации clj-http о постоянных соединениях.