2017-04-01 7 views
2

아래 작업 구성이 XML로되어 있으며 DSL로 변환하려고합니다. 동등한 지 여부와 inboundAdapter를 사용하려고했는지 여부는 확실하지 않습니다. 그러나 거기에 동시성 관련 값을 설정하는 방법을 알아낼 수 없습니다. 누군가 DSL에서 이러한 매개 변수를 사용하여 messageDrivenChannelAdapter 또는 inboundAdapter를 사용한다면 조언 해 줄 수 있습니까?스프링 통합 JMS DSL

<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(); 
} 

답변

2

DefaultMessageListenerContainer container = c.get();으로 수행하는 작업은 이러한 옵션을 제공하는 올바른 방법입니다.

사용 Jms.container() 공장과 같은 변형도 있습니다 :

Jms.messageDrivenChannelAdapter(
       Jms.container(this.jmsConnectionFactory, "containerSpecDestination") 
         .concurrentConsumers(20) 
         .maxConcurrentConsumers(30) 
         .get()) 

우리는 우리가 다루는 유창하게 API를 수 있도록 대상 컨테이너 클래스에 대한 일반적인 유형을 추론하는 configureListenerContainer()을 개선 할 수있는 방법 봄 통합 5.0에 볼 수 있습니다 JmsDefaultListenerContainerSpec.

관련 내용은 JIRA ticket을 참조하십시오.