1
我試圖阻止SqsMessageDrivenChannelAdapter
調用stop()
當我收到以下錯誤:彈簧集成-AWS:SqsMessageDrivenChannelAdapter線程調用的stop()時,等待對方
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)
首先適應症我認爲這是超時時間不夠長,查看問題後,我發現停止線程和正在運行的線程正在等待對方,並且總是會發生。
new Thread() {
public void run()
{
sqsMessageRawDataChannelAdapter.stop();
LockSupport.parkNanos(TimeUnit.SECONDS.toNanos(5));
}
}.start();
我現在已經不再得到TimeoutException
作爲線程能夠停止:我通過後續的代碼解決了這個問題。我做錯了什麼,或者這是一個問題?