Bir yayın abonelik kanalında bir dizi tüketiciye RabbitMQ bağlantı özelliklerinin listesinden gitmek için doğru yol hangisidir? olduğuYay Entegrasyonu ile dinamik yapılandırma
, şöyle tavşan yapılandırma olduğunu varsayalım: Bir @NestedConfigurationProperty List<RabbitConfiguration>
içine bu sıralamakta
rabbits:
- hostname: blahblah
vhost: blahlbah
username: blahlbah
password: blahlbalh
exchange: blahblah
- hostname: blahblah1
vhost: blahlbah1
username: blahlbah1
password: blahlbalh1
exchange: blahblah1
...
.
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public AmqpTemplate amqpTemplate(RabbitConfiguration rabbitConfiguration) {
...
}
Sonra esasen bir IntegrationFlow
o eşleyebilirler:
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public IntegrationFlow integrationFlow(AmqpTemplate amqpTemplate) {
return IntegrationFlows.from(inboundPubSubChannel()).handle(Amqp.outboundAdapter(amqpTemplate)).get();
}
Ne Ancak, I, bana bu List<RabbitConfiguration>
birinden bir AmqpTemplate
alır şöyle bir @Bean
yöntem yazabilirsiniz Bunu bir List<RabbitConfiguration>
için doğru şekilde yapmak ve ortaya çıkan List<IntegrationFlow>
ilkbahar tarafından işlenecek mi? Şüphesiz bu sadece değil:
@Bean
public List<IntegrationFlow> integrationFlows(List<RabbitConfiguration> rabbitConfigurations) {
return rabbitConfigurations.stream()
.map(this::amqpTemplate)
.map(this::integrationFlow)
.collect(toList())
}