2013-12-10 1 views
2

У меня есть потоки интеграции с большой нагрузкой (выделение внешних сетевых вызовов), который использует PriorityQueue перед входом в главный сервисный активатор. Я хочу добавить канал-исполнитель, чтобы улучшить загрузку системы, но я не вижу прямых способов объединения этих каналов.Объединить несколько каналов с интеграцией весов

<int:channel id="monitorInPriorityUpdate"> 
    <int:priority-queue/> 
</int:channel> 

<int:transformer id="monitorLogTransformerStub" 
    input-channel="monitorInPriorityUpdate" output-channel="monitorInUpdate" 
    expression="payload" /> 

<int:channel id="monitorInUpdate"> 
    <int:dispatcher task-executor="monitorExecutor"/> 
</int:channel> 

мне нужно создать 2 дополнительных компонентов, чтобы сделать эту работу, но есть способ объединить несколько Spring Integration каналов в одном, без добавления новых компонентов?

ответ

2

На самом деле, выглядит неточно. Но я пытаюсь угадать. Вам нужно это:

<int:channel id="priorityChannel"> 
    <int:priority-queue/> 
</int:channel> 

<int:bridge input-channel="priorityChannel" output-channel="executorChannel"> 
    <int:poller fixed-rate="100"/> 
</int:bridge> 

<int:channel id="executorChannel"> 
    <int:dispatcher task-executor="threadPoolExecutor"/> 
</int:channel> 

Здесь используется мост перекладывать сообщения от одного канала к другому.

ИЛИ это:

<int:channel id="priorityChannel"> 
    <int:priority-queue/> 
</int:channel> 

<int:service-activator input-channel="priorityChannel" ref="service"> 
    <int:poller fixed-rate="100" task-executor="threadPoolExecutor"/> 
</int:service-activator> 

Здесь вы просто разместить свои сообщения из priorityChannel в taskExecutor с помощью Poller.

Неправильно смешивать проблемы в одном канале. Каждый тип канала играет свою собственную совместную роль. То, что вы хотите достичь, - это не только сведение к минимуму набора текста, но даже если это будет для вас решением, оно будет очень сложным и непрочным.

+0

Это вопрос о том, как архивировать это без использования еще двух компонентов (в моем случае я просто использовал Transformer, который ничего не делает, поэтому мне понадобилось еще 2 дополнительных компонента. 1. Дополнительный канал 2. Пустой трансформатор.) От моя точка зрения должна быть более плавным способом объединить каналы без необходимости добавления дополнительных компонентов, что затрудняет понимание интеграции. – mavarazy

+0

ОК. Как выглядит ваш поток сейчас? И почему для вас недостаточно полллера с 'task-executor'? Как вы получаете сообщения от PriorityChannel? –