2017-08-03 1 views
1

Quelle serait la façon dont l'intégration DSL printemps de créer l'équivalent deDSL Spring Integration équivalent <int: passerelle ... />

<int:gateway service-interface="MyService" default-request-channel="myService.inputChannel"/> 

// where my existing interface looks like 
interface MyService { process(Foo foo); } 

Je n'ai pas été en mesure de trouver une usine à org.springframework.integration.dsl et aucune des listes d'arguments pour IntegrationFlows.from(...) aide la découverte de soi.

On a l'impression de manquer quelque chose comme un adaptateur de protocole Java de https://github.com/spring-projects/spring-integration-java-dsl/wiki/Spring-Integration-Java-DSL-Reference#using-protocol-adapters.

// I imagine this is what I can't find 
IntegrationFlows.from(Java.gateway(MyService.class) 
    .channel("myService.inputChannel") 
    .get(); 

La seule chose que je suis venu à travers est sur un vieux billet de blog, mais il semble exiger annoter l'interface avec @MessagingGateway et @Gateway, que je voudrais éviter. Voir https://spring.io/blog/2014/11/25/spring-integration-java-dsl-line-by-line-tutorial

Répondre

2

Nous l'avons fait récemment dans Spring Integration 5.0. Avec cela, vous pouvez vraiment faire:

@Bean 
public IntegrationFlow controlBusFlow() { 
    return IntegrationFlows.from(ControlBusGateway.class) 
      .controlBus() 
      .get(); 
} 

public interface ControlBusGateway { 

    void send(String command); 
} 

Voir plus d'informations dans le dernier blog post.

À l'heure actuelle, vous n'avez pas le choix à moins de déclarer @MessagingGateway sur l'interface et de démarrer le flux à partir du canal de demande pour cette définition de passerelle.

+0

Merci. J'essaie de transformer, petit à petit, une ancienne application XML en Spring Boot et en configuration Java/DSL. – ptomli

+0

C'est bon! Et comme vous le voyez, il y a encore quelques lacunes de notre côté, aussi. –