Как принимать фиксированное количество запросов одновременно в Http inbound-gateway? - PullRequest
0 голосов
/ 02 октября 2018

Я использую Tomcat и http:inbound-gateway в качестве шлюза, а канал с именем request настроен в качестве канала запроса.Иногда к моему сервису приходит много запросов, которые вызывают Too many open files Ошибка, которая исходит от ОС.Я пытался сделать request канал QueChannel и установить для него пропускную способность, но он не работает.Затем я попытался установить канал request в качестве канала-получателя опроса и установить опрашивающее устройство с фиксированной задержкой для опроса, которое снова не сработало.Есть ли обычный способ ограничить количество запросов ввода?И как я могу настроить ответ в отклоненных запросах?

<int:channel id="request">
  <int:queue capacity="100"/>
</int:channel>    
...
<int-http:inbound-gateway id="RESTServiceGateway"
                        supported-methods="GET"
                        request-channel="request"
                        error-channel="errorResolver" />

<int:chain input-channel="request" output-channel="response">
<int:poller fixed-delay="1" max-messages-per-poll=""/>
...

Или

<task:executor id="requestExecutor" pool-size="1-10" queue-capacity="10"/>
<int:channel id="request">
    <int:dispatcher task-executor="requestExecutor"/>
</int:channel>
<int-http:inbound-gateway id="RESTServiceGateway"
                        supported-methods="GET"
                        request-channel="request"
                        error-channel="errorResolver" />

<int:chain input-channel="request" output-channel="response">
...

1 Ответ

0 голосов
/ 02 октября 2018

Too many open files не относится к вашей конфигурации потока интеграции.Это касается открытых сокетов от клиентов HTTP к вашему Tomcat.Этот уже является параллельным и может обрабатывать много запросов параллельно.Поэтому я бы сказал, что ваша логика распараллеливания в потоке не приносит слишком большого значения и определенно не влияет на количество открытых сокетов.

Вы можете настроить параллелизм в Tomcat, хотя: maxConnectionsв server.xml.

Другой вариант - увеличить сумму за открытый файл в вашем Linux с помощью инструмента ulimit: https://www.tecmint.com/increase-set-open-file-limits-in-linux/

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