У меня есть следующий компонент:весна-интегрально-AWS управления SqsMessageDrivenChannelAdapter шины
@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;
}
ДОПОЛНИТЕЛЬНО: Я пытаюсь найти способ остановки/запуска опроса по команде, я делаю это с помощью аннотации без xml.
В настоящее время я использую SqsMessageDrivenChannelAdapter
и вызывая метод stop, после чего начинается, когда я хочу перезапустить адаптер канала. Проблема, с которой я сталкиваюсь, заключается в том, что исключение тайм-аута выбрасывается в методе остановки, независимо от настроек таймаута. Это происходит на вызове future.get()
(строка 197 из SimpleMessageListenerContainer
) Я думаю, что это приводит к тому, что запуск не работает. Начало не выбрасывает никаких исключений, но голосующий не подхватывает новые сообщения
UPDATE:
пуска и останова, кажется, работают правильно команды. Проблема, кажется, что я не могу установить свойство:
public void setQueueStopTimeout(long queueStopTimeout) {
this.queueStopTimeout = queueStopTimeout;
}
Это живет с SimpleMessageListenerContainer.java
из SqsMessageDrivenChannelAdapter.java
без этого я получаю таймауты, как по умолчанию не достаточно долго.
Я попытался сделать это, 'stop()' приводит к 'TimeoutException', а затем останавливается. Однако, когда я вызываю 'start()' i get 'SqsMessageDrivenChannelAdapter: начал sqsMessageAdapter, но не проверяет ни одно из новых сообщений. – pfitzsimons
Не знаете, в чем проблема, но мои тесты против Spring Spring AWS 1.1.0.RELEASE работают хорошо. –
Я отредактировал вопрос, чтобы быть более конкретным, Cheers. – pfitzsimons