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

Если у меня есть служба отдыха, то я точно знаю, что каждый запрос обрабатывается отдельным потоком, и потоки могут работать параллельно.

Что произойдет, если у меня есть служба отдыха (http) в качестве входящего канала в весенней интеграции. Будет ли каждый запрос по-прежнему обрабатываться параллельно или запросы будут помещены в очереди... и это будет больше похоже на однопоточный


person Roxana    schedule 26.07.2013    source источник


Ответы (2)


Обычные каналы (DirectChannel) используют тот же поток выполнения, что и объект, который помещает что-то в канал (по сути, это способ абстрагирования вызова метода), поэтому они являются многопоточными.

Из документов. :

Помимо того, что это самый простой вариант канала «точка-точка», одной из его наиболее важных функций является то, что он позволяет одному потоку выполнять операции с обеих сторон канала. Например, если обработчик подписан на DirectChannel, то отправка Message на этот канал вызовет вызов метода handleMessage(Message) этого обработчика непосредственно в потоке отправителя до того, как вызов метода send() сможет завершиться.


Редактировать

У вас есть очень хорошая мысль в вашем вопросе. Когда вы устанавливаете элемент Queue в канале, Spring автоматически преобразует его в QueueChannel (documentation), и, насколько я помню, только один поток сможет получать из очереди одновременно. Если вам нужна реальная семантика очереди (несколько потоков производителей и потребителей), вы можете использовать ExecutorChannel

person Augusto    schedule 26.07.2013
comment
Спасибо за ответ. Я видел, что на исходящем канале вы можете установить пропускную способность - мне кажется, это немного противоречиво.... - person Roxana; 26.07.2013

При использовании Rest (http) потоком управляет контейнер сервлета; контейнеры поддерживают несколько одновременных запросов, но настройка параллелизма выполняется в контейнере, а не в Spring Integration.

С прямыми каналами по умолчанию потоки контейнера будут вызывать поток интеграции Spring одновременно с потоками контейнера.

person Gary Russell    schedule 26.07.2013
comment
если есть тот самый "канал" - могут возникнуть проблемы с производительностью? - person Roxana; 30.07.2013
comment
Нет, проблем с производительностью нет; каждый запрос выполняется в потоке контейнера. - person Gary Russell; 30.07.2013