如何按规格订阅不同的频道?
How to subscribe different channels by a specification?
我正在 Spring IntegrationFlows 中寻找切换运算符。我需要根据用户可以决定的 属性 订阅一个频道。
@Bean
public IntegrationFlow flow() {
return IntegrationFlows
.from()
.publishSubscribeChannel(
subscription -> {
if (true)//user is going to decide this.
subscription.subscribe(flow1());
else
subscription.subscribe(flow2());
}
)
.get();
}
这是我的基本实现,但它不起作用。这是一个功能吗?
如果说一个application.properties
,那无非就是配置上的一个条件。查看一个 @Value
注入 bean 定义方法:https://docs.spring.io/spring/docs/5.2.6.RELEASE/spring-framework-reference/core.html#beans-value-annotations
所以,对于您的流 bean,像这样:
@Bean
public IntegrationFlow flow(Value("${your.prop}") String propValue) {
你确实可以做到 if...else
insider a subscription
lambda。
另一种方法是使用 Spring 引导中的 @ConditionalOnProperty
并将那些 flow1()
和 flow2()
作为条件 bean。
然后您可以将 IntegrationFlow
注入到您的 flow()
bean - 相同的方法参数注入技术,并且只有一个条件 bean 可供您使用。
简而言之:在声明 IntegrationFlow
beans 时,可以使用 Spring 依赖注入所能做的一切。
我正在 Spring IntegrationFlows 中寻找切换运算符。我需要根据用户可以决定的 属性 订阅一个频道。
@Bean
public IntegrationFlow flow() {
return IntegrationFlows
.from()
.publishSubscribeChannel(
subscription -> {
if (true)//user is going to decide this.
subscription.subscribe(flow1());
else
subscription.subscribe(flow2());
}
)
.get();
}
这是我的基本实现,但它不起作用。这是一个功能吗?
如果说一个application.properties
,那无非就是配置上的一个条件。查看一个 @Value
注入 bean 定义方法:https://docs.spring.io/spring/docs/5.2.6.RELEASE/spring-framework-reference/core.html#beans-value-annotations
所以,对于您的流 bean,像这样:
@Bean
public IntegrationFlow flow(Value("${your.prop}") String propValue) {
你确实可以做到 if...else
insider a subscription
lambda。
另一种方法是使用 Spring 引导中的 @ConditionalOnProperty
并将那些 flow1()
和 flow2()
作为条件 bean。
然后您可以将 IntegrationFlow
注入到您的 flow()
bean - 相同的方法参数注入技术,并且只有一个条件 bean 可供您使用。
简而言之:在声明 IntegrationFlow
beans 时,可以使用 Spring 依赖注入所能做的一切。