Je traduis actuellement Springs XML- en Java-Configuration. (Spring Version 4.3.4) Je suis actuellement aux prises avec Spring Integration. Le JmsOutboundGateway semble ne pas prendre en charge toutes les options prises en charge par son homologue XML:

XML:

<int-jms:outbound-gateway 
  correlation-key="JMSCorrelationID" auto-startup="true" 
  connection-factory="connectionFactory" explicit-qos-enabled="true" 
  time-to-live="60000" request-channel="myRequestChannel" request-destination="outQueue"
  requires-reply="true" reply-channel="myResponseChannel" reply-destination="inQueue"
  receive-timeout="20000" >
</int-jms:outbound-gateway>

Java traduit:

@Bean
public JmsOutboundGateway myGateway(){
    JmsOutboundGateway gateway = new JmsOutboundGateway();
    gateway.setConnectionFactory(connectionFactory());
    gateway.setCorrelationKey("JMSCorrelationID");
    gateway.setReplyChannel(myResponseChannel());
    gateway.setReplyDestination(inQueue());
    gateway.setReceiveTimeout(20000);
    gateway.setExplicitQosEnabled(true);
    gateway.setRequiresReply(true);
    gateway.setRequestDestination(outQueue())
    return gateway;
}

À savoir, le démarrage automatique et le canal de demande semblent "manquants". Est-ce que je les cherche simplement au mauvais endroit ou des étapes supplémentaires sont-elles nécessaires? Ai-je même mal compris quelque chose?

Merci d'avance!

0
NagelAufnKopp 17 janv. 2017 à 13:24

2 réponses

Meilleure réponse

Tous les points de terminaison consommateurs créés par l'analyseur XML obtiennent 2 beans; un gestionnaire de messagerie et un consommateur qui invoque le gestionnaire; le consommateur dépend du type de canal d'entrée; ces attributs vont sur le consommateur.

Lors de la configuration des points de terminaison consommateurs à l'aide de la configuration Java, ajoutez @ServiceActivator au @Bean pour générer le bean consommateur (utilisez inputChannel pour le canal de requête).

Voir Conseils et astuces de programmation pour plus d'informations .

1
Gary Russell 17 janv. 2017 à 13:39

Essaye ça

   @Bean 
   @ServiceActivator(inputChannel="requestChannel",outputChannel="replyChannel",autoStartup="true")
     public JmsOutboundGateway jmsGateway(){
       JmsOutboundGateway gateway=new JmsOutboundGateway();
       gateway.setConnectionFactory(connectionFactory);
       gateway.setRequestDestinationName("test.out");
       gateway.setReplyDestinationName("test.in");
       gateway.setCorrelationKey("JMSCorrelationID");
       return gateway;
     }
0
Ruchi Saini 17 janv. 2017 à 15:21