Я использую spring -boot: 2.2.6.RELEASE и aws - java -sdk-sqs: 1.11.415 . У меня есть слушатель, который опрашивает сообщение от SQS. Существует условие, при котором слушатель обрабатывает сообщение, и если условие не выполняется, мы должны поместить сообщение обратно в очередь, и оно должно быть доступно для любого другого компонента или того же слушателя через 20 секунд. Я не уверен, как достичь более позднего, поместите сообщение обратно в очередь, и оно должно быть видно через 20 секунд другим слушателям,
Пожалуйста, найдите ниже код для справки,
@Autowired
private QueueMessagingTemplate messagingTemplate;
@PostMapping("/employee")
public String save(@RequestBody Employee employee){
Map<String,Object> headers = new HashMap<>();
headers.put("subject", "send employee details to sqs");
headers.put("name","Donald");
headers.put("traceId","sample");
messagingTemplate.convertAndSend("sample-standard-queue", employee, headers);
return "success";
}
@SqsListener(value = "sample-standard-queue")
public void receivesqs(Employee message, @Headers Map<String,Object> headers, @Header("name") String name) {
// Retrieve employee details from DB using message.id
// If it is in-progress then place the message back to the queue and it should be visible after 20secs
}
Я видел это сообщение , но оно помещает сообщение обратно в очередь, и оно будет немедленно доступно другим читателям. В моем случае он должен быть доступен через 20 секунд.