Spring integration Spring集成JMS DSL

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

我们有下面的XML工作配置,正在尝试转换为DSL。不确定它们是否等效,也尝试使用inboundAdapter。但是,我无法确定如何在那里设置与并发相关的值。有人能告诉我他们是否在DSL中使用了messageDrivenChannelAdapter或inboundAdapter这些参数吗

<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()是提供这些选项的正确方法

还有一种变体,如use
Jms.container()
factory:

Jms.messageDrivenChannelAdapter(
                Jms.container(this.jmsConnectionFactory, "containerSpecDestination")
                        .concurrentConsumers(20)
                        .maxConcurrentConsumers(30)
                        .get())
我们将在Spring Integration
5.0
中看到如何改进
configureListenerContainer()
以推断目标容器类的泛型类型,从而让fluent API直接处理
JmsDefaultListenerContainerSpec

在这件事上见吉拉