2016-06-13 12 views
2

Ich habe folgende Bohne:feder Integration-aws SqsMessageDrivenChannelAdapter Steuerbus

@Bean 
public MessageProducer sqsMessageAdapter() { 
    SqsMessageDrivenChannelAdapter adapter = new SqsMessageDrivenChannelAdapter(this.amazonSqs, awsConfiguration.myQueue.get()); 
    adapter.setAutoStartup(true); 
    adapter.setMaxNumberOfMessages(1); 
    adapter.setSendTimeout(2000); 
    adapter.setVisibilityTimeout(200); 
    adapter.setWaitTimeOut(20); 
    adapter.setOutputChannel(this.myOutput); 
    return adapter; 
} 

MEHR INFO: Ich versuche, einen Weg zu stoppen/starten Polling auf Befehl zu finden, ich tue dies mit Anmerkungen ohne XML.

Derzeit verwende ich die SqsMessageDrivenChannelAdapter und Aufruf der Stop-Methode, gefolgt von dem Start, wenn ich den Kanaladapter neu starten möchte. Das Problem, das ich habe, ist, dass eine Timeout-Ausnahme in der Stopp-Methode unabhängig von Timeout-Einstellungen ausgelöst wird. Dies passiert auf dem future.get() Anruf (Zeile 197 von SimpleMessageListenerContainer) Ich denke, das verursacht Start nicht zu arbeiten. Starten Sie keine Ausnahmen werfen, aber die poller abholen keine neuen Nachrichten

UPDATE:

Die Start- und Stoppbefehle scheinen richtig zu arbeiten. Das Problem scheint zu sein, dass ich nicht die Eigenschaft festlegen:

public void setQueueStopTimeout(long queueStopTimeout) { 
    this.queueStopTimeout = queueStopTimeout; 
} 

Dieser lebt mit SimpleMessageListenerContainer.java von SqsMessageDrivenChannelAdapter.java, ohne dass dies ich Timeouts bin immer als Standard nicht lang genug ist.

Antwort

0

Ihre Frage ist nicht klar. Bitte denken Sie in Zukunft genauer nach.

Wie auch immer, lassen Sie mich raten, dass Sie start()/stop() Operationen von diesem SqsMessageDrivenChannelAdapter bedeuten. Nicht sicher, was das Problem ist, es an den gewünschten Ort zu injizieren und diese Methoden aufzurufen.

@Autowired 
@Qualifier("sqsMessageAdapter") 
private Lifecycle sqsMessageAdapter; 
+0

Ich habe versucht, dies zu tun, die 'stop()' führt zu einer 'TimeoutException' und stoppt dann. Wenn ich 'start()' 'hole, bekomme ich" SqsMessageDrivenChannelAdapter: started sqsMessageAdapter ", fragt aber keine der neuen Nachrichten ab. – pfitzsimons

+0

Nicht sicher, was ist Ihr Problem, aber meine Tests gegen 'Spring Cloud AWS 1.1.0.RELEASE' funktionieren gut. –

+0

Ich habe die Frage bearbeitet, um genauer zu sein, Prost. – pfitzsimons