私からのメッセージを消費するの基本的なワークフローを作成SQS
してを@SqsListener
。それが正常に動作しますが、私は常に同様のメッセージのトンを得ます:
org.springframework.core.task.TaskRejectedException:キュータ[java.util.concurrent.ThreadPoolExecutor@372b568 [実行、プールサイズ= 3、アクティブなスレッド= 3、キューに入れられたタスク= 0、完了したタスク= 0]]タスクを受け入れませんでした。 org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor.executeでorg.springframework.cloud.aws.messaging.listener.SimpleMessageListenerContainer$SignalExecutingRunnable@4c30c2f9(ThreadPoolTaskExecutor.java:317)〜[春-コンテキスト5.1.4.RELEASE.jar: org.springframework.cloud.aws.messaging.listener.SimpleMessageListenerContainer $ AsynchronousMessageListener.run(SimpleMessageListenerContainer.java:286)で5.1.4.RELEASE]〜[春-クラウドAWS-メッセージング-2.1.0.RELEASE.jar:2.1 java.util.concurrent.FutureTask.run(FutureTask.java:266)で1.8.0_171] [NA:java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)[NAで.0.RELEASE] :java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)で1.8.0_171] [NA:1.8.0_171] java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)で[NA: java.lang.Thread.run(Thread.java:748)で1.8.0_171] [NA:1.8.0_171]によって引き起こさ:java.util.concurrent.RejectedExecutionException:タスクorg.springframework.cloud.aws.messaging.listener。 SimpleMessageListenerContainer $ SignalExecutingRunnable @ 4c30c2f9 java.util.concurrent.ThreadPoolExecutor@372b568から拒否され、[実行すると、プールサイズ= 3、アクティブなスレッド= 3、キューに入れられたタスク= 0、完了したタスク= 0] java.util.concurrent.ThreadPoolExecutor $ AbortPolicyで。 java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830)で[NA:1.8.0_171]:rejectedExecution(ThreadPoolExecutor.java:2063)〜[1.8.0_171ナ] java.util.concurrent.ThreadPoolExecutorで。実行(ThreadPoolExecutor.java:1379)NA:1.8.0_171] org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor.execute(ThreadPoolTaskExecutor.java:314)〜[ばねコンテキスト5.1.4.RELEASE.jarで:5.1。 4.RELEASE] ...省略6つの共通フレーム
私のコンフィグレーションBean:
@EnableSqs
@Configuration
public class AmazonSqsConfiguration {
@Value("${aws.sqs.accessKey}")
private String accessKey;
@Value("${aws.sqs.secretKey}")
private String secretKey;
@Value("${aws.sqs.region}")
private String region;
@Value("${aws.sqs.url}")
private String url;
@Bean
public AmazonSQSAsync amazonSqs() {
AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
AWSStaticCredentialsProvider credentialsProvider = new AWSStaticCredentialsProvider(credentials);
return AmazonSQSAsyncClientBuilder.standard()
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(url, region))
.withCredentials(credentialsProvider)
.build();
}
}
私の消費者は以下の通りであります:
@SqsListener(value = "my-queue", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
public void processSubscription(String xmlNotification) {/* Message processor */}
再と設定することにより、それらを削除することが可能ですか@Bean
?どのような問題の根本的な原因であり、どのようにそれと戦うために?
私は、自然検索で解決策を見つけることを試みたとして発生した以下の答え。私が持っていないので、それは、私のために動作しませんJMS
。私もデバッグに何を知らないので、私はデバッグすることができませんでした。
私はのためにチケットを見つけ、ばねクラウドAWS私が遭遇した行動に関連します。私はまた、関連する見つけるStackOverflowの質問を。
そのため、私のために働いたソリューションは、以下の通りでした:
@Bean
public SimpleMessageListenerContainerFactory simpleMessageListenerContainerFactory(AmazonSQSAsync amazonSQS) {
SimpleMessageListenerContainerFactory factory = new SimpleMessageListenerContainerFactory();
factory.setAmazonSqs(amazonSQS);
factory.setMaxNumberOfMessages(10);
factory.setAutoStartup(true);
factory.setWaitTimeOut(20);
return factory;
}