Spring integration Spring集成JMS DSL
我们有下面的XML工作配置,正在尝试转换为DSL。不确定它们是否等效,也尝试使用inboundAdapter。但是,我无法确定如何在那里设置与并发相关的值。有人能告诉我他们是否在DSL中使用了messageDrivenChannelAdapter或inboundAdapter这些参数吗Spring integration Spring集成JMS DSL,spring-integration,dsl,Spring Integration,Dsl,我们有下面的XML工作配置,正在尝试转换为DSL。不确定它们是否等效,也尝试使用inboundAdapter。但是,我无法确定如何在那里设置与并发相关的值。有人能告诉我他们是否在DSL中使用了messageDrivenChannelAdapter或inboundAdapter这些参数吗 <jms:message-driven-channel-adapter id="inputChannelAdapter" channel="inputChannel" destination-name
<jms:message-driven-channel-adapter
id="inputChannelAdapter"
channel="inputChannel"
destination-name="inboundQueueName"
connection-factory="cachingConnectionFactory"
acknowledge="transacted"
header-mapper="defaultJmsHeaderMapper"
error-channel="errorChannel"
concurrent-consumers="10"
max-concurrent-consumers="20"/>
@Bean
public IntegrationFlow jmsInboundFlow() {
return IntegrationFlows
.from(Jms.messageDrivenChannelAdapter(cachingConnectionFactory)
.configureListenerContainer(c -> {
DefaultMessageListenerContainer container = c.get();
container.setSessionTransacted(true);
container.setSessionAcknowledgeModeName("");
container.setMaxConcurrentConsumers(30);
container.setConcurrentConsumers(20);
})
.destination(inboundQueueName).headerMapper(defaultJmsHeaderMapper)
.errorChannel("errorChannel"))
.channel(MessageChannels.queue("inputChannel"))
.get();
}
@Bean
public IntegrationFlow jmsInboundFlow1() {
return IntegrationFlows
.from(Jms.inboundAdapter(cachingConnectionFactory)
.configureJmsTemplate(t ->
t.deliveryPersistent(true).sessionTransacted(true).sessionAcknowledgeModeName(""))
.destination(inboundQueueName).headerMapper(defaultJmsHeaderMapper))
.channel(MessageChannels.queue("inputChannel"))
.get();
}
@豆子
公共集成流jmsInboundFlow(){
返回积分流
.from(Jms.messageDrivenChannelAdapter(cachingConnectionFactory)
.configureListenerContainer(c->{
DefaultMessageListenerContainer=c.get();
container.SetSessionTransactived(true);
container.setSessionAcknowledgeMemodeName(“”);
容器。setMaxConcurrentConsumers(30);
容器。setConcurrentConsumers(20);
})
.destination(inboundQueueName).headerMapper(defaultJmsHeaderMapper)
.errorChannel(“errorChannel”))
.channel(MessageChannels.queue(“inputChannel”))
.get();
}
@豆子
公共集成流jmsInboundFlow1(){
返回积分流
.from(Jms.inboundAdapter(cachingConnectionFactory)
.configureJmsTemplate(t->
t、 deliveryPersistent(true).SessionTransactited(true).SessionAcknowledgeMemodeName(“”)
.destination(inboundQueueName).headerMapper(defaultJmsHeaderMapper))
.channel(MessageChannels.queue(“inputChannel”))
.get();
}
如何处理DefaultMessageListenerContainer=c.get()代码>是提供这些选项的正确方法
还有一种变体,如useJms.container()
factory:
Jms.messageDrivenChannelAdapter(
Jms.container(this.jmsConnectionFactory, "containerSpecDestination")
.concurrentConsumers(20)
.maxConcurrentConsumers(30)
.get())
我们将在Spring Integration5.0
中看到如何改进configureListenerContainer()
以推断目标容器类的泛型类型,从而让fluent API直接处理JmsDefaultListenerContainerSpec
在这件事上见吉拉