2017-04-01 12 views
2

XMLで以下のような構成があり、DSLに変換しようとしています。同等か、inboundAdapterを使用しようとしているかどうかは不明です。しかし、そこに並行性関連の値を設定する方法を理解することはできません。誰かが、DSLでこれらのパラメータを使用してmessageDrivenChannelAdapterまたはinboundAdapterのいずれかを使用するかどうかアドバイスできますか?Spring統合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を参照してください。

関連する問題