У меня один вопрос: мой сервис основан на Spring Boot, я хочу получать сообщения из AWS SQS и сохранять эти сообщения в Redis.
Вот мой слушатель:
@SqsListener(value = "${amazon.sqs.destination}", deletionPolicy = SqsMessageDeletionPolicy.NEVER)
public void receive(String requestJSON, Acknowledgment acknowledgment) throws IOException, AmazonSQSException {
try (Jedis jedis = jedisPool.getResource()) {
if (redisPassword != null && !redisPassword.isEmpty()) {
jedis.auth(redisPassword);
}
long key = jedis.incr("Trace:");
Trace trace = Trace.fromJSON(requestJSON);
trace.setTechnicalId(Long.toString(key));
traceRepository.save(trace);
acknowledgment.acknowledge();
}catch (Exception e) {
throw new IOException(e.getMessage());
}
}
У меня есть очередь A AWS SQS A и очередь недоставленных писем B. При возникновении проблемы с синтаксическим анализом JSON для объекта это сообщение следует сохранить в мертвом состоянии.очередь писем.Это работает сейчас, как и ожидалось.То, что я должен иметь, это когда, например, Redis мертв -> строка
try (Jedis jedis = jedisPool.getResource()) {
выдает ошибку, которую я хотел бы НЕ УДАЛИТЬ мое сообщение из очереди A и перейти в очередь недоставленных писем B, НО я быхотел бы, чтобы мое сообщение оставалось в очереди A, пока Redis не будет работать снова.
КАК это сделать?Как провести различие между этими двумя случаями (ошибки синтаксического анализа и проблемы с повторным отображением) и использовать другой подход (переместить сообщение в очередь недоставленных сообщений, восстановить сообщение и снова сделать его видимым)?
СПАСИБО ЗА ПРЕДЕЛАМ Mateusz