2016-12-27 1 views
0

Ich habe einen Steuerkanal und einen Gateway-Dienst erstellt, um eine Steuernachricht an diesen Kanal zu senden. Jedoch, nach dem Aufruf der Gateway-Service-Methode, die zurückgeben soll Boolean nicht nach der Übermittlung der Nachricht zurück.Spring Integration Gateway Dienstmethode, die beim Start/Stopp nicht zurückkehrt

Code Snippet:

public interface SampleControlService { 
    boolean sendControl(String message); 
} 

.... 

@Autowired 
private SampleControlService sampleControlService; 

..... 

boolean done = sampleControlService.sendControl("@testAdapter.stop()"); // message gets sent but it is not returning to caller 

System.out.println("Done : " + done); // this line doesn't execute 


// integration config 
<int:channel id="controlChannel"/> 
<int:gateway service-interface="com.test.service.SampleControlService" default-request-channel="controlChannel" /> 
<int:control-bus input-channel="controlChannel"/> 

Allerdings, wenn ich eine Nachricht @ testAdapter.isRunning() senden, um den Status zu überprüfen, gibt es, wie erwartet.

Antwort

1

Nun void stop() gibt kein Ergebnis zurück, während boolean isRunning() tut; Das Gateway weiß nichts über die aufgerufene Methode. Sie "erzählen" den Rahmen, den Sie erwarten, ein Ergebnis, das nie kommen wird.

Sie können eine andere Gateway Methode

void sendOneWayControl(String command); 

oder fügen Sie default-reply-timeout="0" zum Gateway hinzufügen und Sie erhalten eine null Rückkehr zu bekommen.

+0

danke, fügte die neue Methode hinzu. – zdesam

Verwandte Themen