Cách nào để đi từ danh sách thông số kết nối RabbitMQ đến một loạt người tiêu dùng trên kênh đăng ký xuất bản?Cấu hình động với Spring Integration
Nghĩa là, nói rằng tôi có thỏ cấu hình như sau:
rabbits:
- hostname: blahblah
vhost: blahlbah
username: blahlbah
password: blahlbalh
exchange: blahblah
- hostname: blahblah1
vhost: blahlbah1
username: blahlbah1
password: blahlbalh1
exchange: blahblah1
...
tôi marshal những thành @NestedConfigurationProperty List<RabbitConfiguration>
. Tôi có thể viết một phương pháp @Bean
mà được cho tôi một AmqpTemplate
từ một trong những List<RabbitConfiguration>
, như vậy:
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public AmqpTemplate amqpTemplate(RabbitConfiguration rabbitConfiguration) {
...
}
tôi có thể sau đó về cơ bản bản đồ đó để một IntegrationFlow
:
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public IntegrationFlow integrationFlow(AmqpTemplate amqpTemplate) {
return IntegrationFlows.from(inboundPubSubChannel()).handle(Amqp.outboundAdapter(amqpTemplate)).get();
}
gì, tuy nhiên, là đúng cách để làm điều này cho một số List<RabbitConfiguration>
và có kết quả là List<IntegrationFlow>
do Spring xử lý? Chắc chắn nó không chỉ là:
@Bean
public List<IntegrationFlow> integrationFlows(List<RabbitConfiguration> rabbitConfigurations) {
return rabbitConfigurations.stream()
.map(this::amqpTemplate)
.map(this::integrationFlow)
.collect(toList())
}