Qual è il modo corretto per passare da un elenco di specifiche di connessione RabbitMQ a una serie di utenti su un canale di registrazione di pubblicazione?Configurazione dinamica con Spring Integration
Vale a dire, dire che ho coniglio config come segue:
rabbits:
- hostname: blahblah
vhost: blahlbah
username: blahlbah
password: blahlbalh
exchange: blahblah
- hostname: blahblah1
vhost: blahlbah1
username: blahlbah1
password: blahlbalh1
exchange: blahblah1
...
ho maresciallo questi in un @NestedConfigurationProperty List<RabbitConfiguration>
. Potrei scrivere un metodo @Bean
che mi ottiene un AmqpTemplate
da uno di quelli List<RabbitConfiguration>
, in questo modo:
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public AmqpTemplate amqpTemplate(RabbitConfiguration rabbitConfiguration) {
...
}
Posso quindi essenzialmente traccio che a un IntegrationFlow
:
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public IntegrationFlow integrationFlow(AmqpTemplate amqpTemplate) {
return IntegrationFlows.from(inboundPubSubChannel()).handle(Amqp.outboundAdapter(amqpTemplate)).get();
}
Quello che, invece, è la modo giusto per fare questo per un List<RabbitConfiguration>
e il List<IntegrationFlow>
risultante gestito da Primavera? Di certo non si tratta solo:
@Bean
public List<IntegrationFlow> integrationFlows(List<RabbitConfiguration> rabbitConfigurations) {
return rabbitConfigurations.stream()
.map(this::amqpTemplate)
.map(this::integrationFlow)
.collect(toList())
}