Объединение потоков в контроллерах и сервисах Grails

Мне интересно, как контроллеры и службы внедряются в Grails. В частности, я хотел бы знать, поддерживает ли и как пул потоков как для контроллеров, так и для служб.

Предполагая следующий сценарий:

У меня есть контроллер Grails, который вызывает службу, которая блокирует   вызов внешней системы.

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

1
nl ja de
что вы подразумеваете под «блокировкой вызова внешней системы»? Принимает ли эта система одновременные запросы?
добавлено автор Igor Artamonov, источник
Я имею в виду синхронный вызов (ожидание блока). Да, внешняя система может обрабатывать одновременные запросы.
добавлено автор Will, источник

1 ответы

Вам не нужно делать что-то конкретное, со стороны Grails, каждый запрос, выполненный в собственном потоке, согласуется.

Из официальных документов: « По умолчанию доступ к методам обслуживания не синхронизирован, поэтому ничто не мешает одновременному выполнению этих функций. « См. http://www.grails.org/version/Services/2 (« Услуги и области применения »)

4
добавлено
Это зависит от вашего веб-контейнера. Например, для Tomcat: tomcat.apache.org/tomcat-7.0-doc /config/http.html (см. maxThreads )
добавлено автор Igor Artamonov, источник
для контроллеров
добавлено автор Igor Artamonov, источник
как вы выяснили, что он ждет? пожалуйста, напишите свой код
добавлено автор Igor Artamonov, источник
Пожалуйста, сделайте это как новый вопрос здесь, а не в комментариях. А также, пожалуйста, сделайте это проще, никто не прочитает сотни строк кода. Фактически, его плохая практика имеет такие огромные методы, если ваш метод не подходит к экрану, который вам нужно реорганизовать, или это будет невозможно проверить этот код и поддержку в будущем.
добавлено автор Igor Artamonov, источник
Как насчет контроллеров? Например. Контроллер сохраняет действие с большим количеством объектов. Может ли он заблокировать, должен ли я использовать Thread.new для этого?
добавлено автор havenchyk, источник
Но я не могу одновременно вызвать метод в классе сервиса. Когда я вызываю метод службы несколько раз. Он ожидает завершения первого выполнения, затем обрабатывает следующие запросы. Я думаю, что он размещает запросы в очередях и выполняет их на свою очередь. Но я хочу его одновременное выполнение. что может быть причиной этого? Является ли ключевое слово @Transactional перед именем класса службы, не позволяя ему обрабатывать запросы одновременно?
добавлено автор Bilal Ahmed Yaseen, источник
Вот код моего класса Servcie: codepad.org/FjFrjG1Z У меня только один метод, и я называю этот метод Несколько раз для параллельного выполнения. Но он не выполняет их одновременно, а мое оставшееся веб-приложение также получает Hang (Stop Working). Пока этот метод не завершит все исполнения. Спасибо за ваш интерес. Надеюсь скоро услышать от вас.
добавлено автор Bilal Ahmed Yaseen, источник
На самом деле, я не думаю, что нужно читать код. Главное, почему метод службы не вызывается одновременно.
добавлено автор Bilal Ahmed Yaseen, источник
Это определенно полезно спасибо. Знаете ли вы о какой-либо более подробной документации? например есть ли способ ограничить количество потоков, порожденных для каждого запроса? Есть ли механизм для обработки сценариев, когда количество запросов становится слишком большим?
добавлено автор Will, источник
большое спасибо :)
добавлено автор Will, источник
Ruby, Rails, Hanami | dry-rb
Ruby, Rails, Hanami | dry-rb
1 180 участник(ов)

https://telegram.me/rubyjob - Ruby Job По вопросам - @eugene_shved

Rubyata
Rubyata
333 участник(ов)

Коммюнити Ruby и Ruby On Rails Флуд не приветствуются. Вакансии можно публиковать только и ТОЛЬКО по пятницам с хештегом #вакансия.

Rails Chat
Rails Chat
87 участник(ов)

You are welcome to discuss Ruby On Rails development process and other stuff