Поддерживать пул исходящих TCP-соединений в ColdFusion - PullRequest
2 голосов
/ 09 марта 2012

Я рассчитываю на большое потребление RESTful API из приложения ColdFusion.

Я не эксперт по CF, но я ожидаю, что повторные вызовы cfhttp станут узким местом, так как я считаю, чтокаждый из них приводит к установлению соединения, отправке запроса, получению ответа и разрыву соединения.

Мне любопытно - есть ли способ поддерживать пул соединений, через который можно отправлять запросы, чтобы избежать повторного установления /сносить?

Предоставляет ли сервер ColdFusion такое средство, о котором я просто не знаю (мы используем CF 8), или я могу написать пользовательский тег Java, который может поддерживать пул?

Конечно, кто-то еще сталкивался с этим.

Ответы [ 2 ]

0 голосов
/ 09 марта 2012

Я думаю, что вы могли бы сделать это, используя заголовок запроса Keep-Alive с вашими вызовами cfhttp.Например:

<cfloop from="1" to="50" index="i">
  <cfhttp url="http://mysite.com/getPage.cfm?i=#i#" method="get">
    <cfif i LT 50>
    <CFHTTPPARAM type="HEADER" name="Connection" value="Keep-Alive">
    <cfelse>
    <CFHTTPPARAM type="HEADER" name="Connection" value="close">
    </cfif>
  </cfhttp>

  <cfdump var="#cfhttp.filecontent#">

</cfloop>

Я не проверял это, но теоретически он должен держать соединение с бэкэндом открытым, пока вы выполняете каждый из этих запросов (при условии, что бэкэнд учитывает это и задержку междусоединения не вызвали тайм-аут).Вы должны быть уверены, что ваш ответ API содержит заголовок «Content-length», чтобы клиент (ваш код cfhttp) знал, когда завершился каждый запрос.Вы захотите создать явное «закрытие», как я показал, чтобы предотвратить ненужные открытые соединения с бэкендом.

0 голосов
/ 09 марта 2012

К сожалению, я думаю, что ответ "нет", особенно из-за ваших требований. Это просто не то, как работает REST; и ограничение является стороной API, а не проблемой ColdFusion.

Вы могли бы сделать что-то подобное, предполагая, что у вас тоже есть контроль над API, но это не будет REST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...