Spring 集成 | Header 使用 Java 配置丰富
Spring Integration | Header Enricher using Java Configuration
什么是 Java config 等同于以下 header enricher:-
<!-- Business Entity Header Enricher -->
<int:header-enricher
id="businessEntityHeaderEnricherComponent"
should-skip-nulls="false"
output-channel="notificationPreferencesInputChannel"
input-channel="newUserCreatedChannel">
<!-- Tenant -->
<int:header name="tenant"
<!-- !! HEADER ENRICHMENT ID DONE BY SPRING MANAGED BEAN !! -->
ref="businessEntityPayloadHeaderEnricher"
method="extractTenant" />
</int:header-enricher>
我有一个 Spring 托管的 @Bean,它的方法(return 一个 Map)应该负责丰富消息 header。
我知道我也可以使用 spring-integration-dsl 但到目前为止我需要坚持使用 Java 配置。
例如,这就是我使用 Java 配置定义服务激活器的方式:-
@Bean
@ServiceActivator(requiresReply = "false", inputChannel = "lifeCycleRouterChannel")
public InvoiceDelinquencyServiceActivator serviceActivator() {
return new InvoiceDelinquencyServiceActivator();
}
定义 Header Enricher 的等效方法是什么?
找不到任何 example/reference.
谢谢。
HeaderEnricher implements Transformer
,所以你可以这样做:
@Bean
@Transformer(inputChannel = "enrichChannel", outputChannel = "processChannel")
public HeaderEnricher headerEnricher() {
HeaderEnricher headerEnricher = new HeaderEnricher (...);
....
return headerEnricher;
}
我有类似的需求,下面的 Groovy 代码帮助我使用 bean/method 调用添加 header。
@Bean
public HeaderEnricher authTokenHeaderEnricher() {
new HeaderEnricher(["AUTH_TOKEN":
new MessageProcessingHeaderValueMessageProcessor(
new BeanNameMessageProcessor<Object>('authTokenProvider', 'fetchAuthToken')
)
]
)
}
@Bean
IntegrationFlow readyForDispatchFlow() {
IntegrationFlows
.from("inputChannel")
.transform(authTokenHeaderEnricher())
.channel("outputChannel")
.get()
}
什么是 Java config 等同于以下 header enricher:-
<!-- Business Entity Header Enricher -->
<int:header-enricher
id="businessEntityHeaderEnricherComponent"
should-skip-nulls="false"
output-channel="notificationPreferencesInputChannel"
input-channel="newUserCreatedChannel">
<!-- Tenant -->
<int:header name="tenant"
<!-- !! HEADER ENRICHMENT ID DONE BY SPRING MANAGED BEAN !! -->
ref="businessEntityPayloadHeaderEnricher"
method="extractTenant" />
</int:header-enricher>
我有一个 Spring 托管的 @Bean,它的方法(return 一个 Map)应该负责丰富消息 header。
我知道我也可以使用 spring-integration-dsl 但到目前为止我需要坚持使用 Java 配置。
例如,这就是我使用 Java 配置定义服务激活器的方式:-
@Bean
@ServiceActivator(requiresReply = "false", inputChannel = "lifeCycleRouterChannel")
public InvoiceDelinquencyServiceActivator serviceActivator() {
return new InvoiceDelinquencyServiceActivator();
}
定义 Header Enricher 的等效方法是什么? 找不到任何 example/reference.
谢谢。
HeaderEnricher implements Transformer
,所以你可以这样做:
@Bean
@Transformer(inputChannel = "enrichChannel", outputChannel = "processChannel")
public HeaderEnricher headerEnricher() {
HeaderEnricher headerEnricher = new HeaderEnricher (...);
....
return headerEnricher;
}
我有类似的需求,下面的 Groovy 代码帮助我使用 bean/method 调用添加 header。
@Bean
public HeaderEnricher authTokenHeaderEnricher() {
new HeaderEnricher(["AUTH_TOKEN":
new MessageProcessingHeaderValueMessageProcessor(
new BeanNameMessageProcessor<Object>('authTokenProvider', 'fetchAuthToken')
)
]
)
}
@Bean
IntegrationFlow readyForDispatchFlow() {
IntegrationFlows
.from("inputChannel")
.transform(authTokenHeaderEnricher())
.channel("outputChannel")
.get()
}