У меня есть прямой канал:
@Bean
public DirectChannel emailingChannel() {
return MessageChannels
.direct( "emailingChannel")
.get();
}
Могу ли я определить несколько потоков для одного и того же канала следующим образом:
@Bean
public IntegrationFlow flow1FromEmailingChannel() {
return IntegrationFlows.from( "emailingChannel" )
.handle( "myService" , "handler1")
.get();
}
@Bean
public IntegrationFlow flow2FromEmailingChannel() {
return IntegrationFlows.from( "emailingChannel" )
.handle( "myService" , "handler2" )
.get();
}
EDIT
@Service
public class MyService {
public void handler1(Message<String> message){
....
}
public void handler2(Message<List<String>> message){
....
}
}
Метод handle(...)
каждого потока манипулирует различными типами данных payload
, но цель одна и та же: чтение данных из канала и вызов соответствующего обработчика.Я бы хотел, чтобы многие if...else
не проверяли тип данных в одном обработчике.
Дополнительный вопрос: Что происходит, когда несколько потоков вызывают один и тот же канал (независимо от его типа: * 1019)*, PubSub
или Queue
) одновременно (по умолчанию @Bean
имеет одноэлементную область видимости)?
Большое спасибо