2014-02-19 9 views
7

Ich hatte den folgenden XML-Code in meiner Feder-config.xmlWie mehrere JMS MessageListners in einem einzigen MessageListenerContainer for Spring Java Config

<jms:listener-container acknowledge="auto" 
     connection-factory="cachedConnectionFactory" container-type="default" 
     error-handler="consumerErrorHandler" concurrency="20-25"> 
     <jms:listener destination="#{TaskFinished.destination}" 
      method="onMessage" ref="taskFinished" /> 
</jms:listener-container> 

Jetzt hinzufügen, ich war auf Java-Konfiguration meine Feder XML-Konfigurationsdatei konvertieren .

Ich übersetzte es wie

@Bean(name = "consumerJmsListenerContainer") 
public DefaultMessageListenerContainer consumerJmsListenerContainer() { 
    DefaultMessageListenerContainer messageListenerContainer = new DefaultMessageListenerContainer(); 
    messageListenerContainer 
      .setConnectionFactory(cachingConnectionFactory()); 
    messageListenerContainer.setConcurrency("20-25"); 
    messageListenerContainer.setErrorHandler(new ConsumerErrorHandler()); 
    messageListenerContainer 
      .setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE); 
    messageListenerContainer.setMessageListener(new TaskFinished()); 
    return messageListenerContainer; 
} 

Was ich wissen muss, ist, wenn es mehr als eine MessageListner im Nachrichten Container waren wie

<jms:listener-container acknowledge="auto" 
     connection-factory="cachedConnectionFactory" container-type="default" 
     error-handler="consumerErrorHandler" concurrency="20-25"> 
     <jms:listener destination="#{questionGeneration.destination}" 
      method="onMessage" ref="questionGeneration" /> 
     <jms:listener destination="#{friendShipLogic.destination}" 
      method="onMessage" ref="friendShipLogic" /> 
     <jms:listener destination="#{postAvailabilityChecker.destination}" 
      method="onMessage" ref="postAvailabilityChecker" /> 
     <jms:listener destination="#{playOn.destination}" method="onMessage" 
      ref="playOn" /> 
</jms:listener-container> 

Wie könnte ich denn diese XML-Code konvertieren in Java-Konfiguration?

Antwort

8

Der Namespace ist nur eine Annehmlichkeit - jeder <jms:listener/> Element bekommt seine eigene DMLC; das äußere (Container-) Element ist nur ein Vehikel, um gemeinsame Attribute zu liefern.

0

Sie können container.setConcurrentConsumers(10); hinzufügen, wobei die Anzahl der Verbraucher 10

ist