Ich versuche, nur ein Element aus einer sqs-Warteschlange zu einem bestimmten Zeitpunkt bearbeitet werden. Momentan wird nur eine einzige Nachricht von einer Warteschlange angerufen, aber dies wird immer so weitergeführt, wie es bei jeder Abfrage der Fall ist.AWS Integrationsfeder: Garantiere nur einen Artikel von sqs
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(2);
executor.setMaxPoolSize(2);
executor.setQueueCapacity(10);
executor.setThreadNamePrefix("test-");
executor.initialize();
return executor;
new SqsMessageDrivenChannelAdapter(amazon));
adapter.setMaxNumberOfMessages(1);
adapter.setSendTimeout(2000);
adapter.setVisibilityTimeout(1200);
adapter.setWaitTimeOut(20);
adapter.setTaskExecutor(this.asyncTaskExecutor());
Das Problem scheint innerhalb der ThreadPoolTaskExecutor und mein Verständnis davon zu sein. Da die Warteschlangengröße 10 ist, wird sie jedes Mal angehoben, bis diese voll ist?
die MaxPoolSize 1. Einstellung bewirkt, dass ein
Caused by: java.util.concurrent.RejectedExecutionException: Task org.springframework.cloud.aws.messaging.[email protected]406354e5 rejected from [email protected][Running, pool size = 1, active threads = 1, queued tasks = 0, completed tasks = 0]
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2047)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:823)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1369)
at org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor.execute(ThreadPoolTaskExecutor.java:293)
... 6 common frames omitted
Das war meine erste Idee das hat nicht funktioniert, siehe oben. @Gandalf – user101010101
Will wahrscheinlich viel mehr Code, um dies herauszufinden. GitHub? – Gandalf