Я пытался остановить SqsMessageDrivenChannelAdapter
при вызове stop()
я получаю следующее сообщение об ошибке:весна-интегрально-AWS: SqsMessageDrivenChannelAdapter потоки, ожидающие друг друга при вызове остановки()
java.util.concurrent.TimeoutException: null
at java.util.concurrent.FutureTask.get(FutureTask.java:205)
at org.springframework.cloud.aws.messaging.listener.SimpleMessageListenerContainer.stop(SimpleMessageListenerContainer.java:197)
at org.springframework.cloud.aws.messaging.listener.SimpleMessageListenerContainer.doStop(SimpleMessageListenerContainer.java:133)
at org.springframework.cloud.aws.messaging.listener.AbstractMessageListenerContainer.stop(AbstractMessageListenerContainer.java:329)
at org.springframework.cloud.aws.messaging.listener.SimpleMessageListenerContainer.stop(SimpleMessageListenerContainer.java:1)
at org.springframework.integration.aws.inbound.SqsMessageDrivenChannelAdapter.doStop(SqsMessageDrivenChannelAdapter.java:140)
at org.springframework.integration.endpoint.AbstractEndpoint.stop(AbstractEndpoint.java:111)
Первые признаки я думал, что это было тайм-аут был недостаточно долгим, после изучения проблемы я обнаружил, что стоп-нить и работающая нить ждут друг друга, и всегда будет происходить TimeoutException
. Я это исправил по последующей части кода:
new Thread() {
public void run()
{
sqsMessageRawDataChannelAdapter.stop();
LockSupport.parkNanos(TimeUnit.SECONDS.toNanos(5));
}
}.start();
теперь я больше не получить TimeoutException
как нить может остановиться. Я сделал что-то не так, или это проблема?