Подтвердить сообщение в Spring Cloud Stream
Я решил пойти с SCS, чтобы не застрять с конкретным брокером сообщений. Сказав это, я не нашел способа подтверждать сообщения автоматически или вручную, и все, что я нашел, это что-то под Spring Cloud GCP, например PubSubTemplate. Проблема в том, что мой слушатель постоянно получает одни и те же сообщения. Есть ли способ автоматического подтверждения сообщения, как только оно будет извлечено в SCS, независимо от реализации обмена сообщениями? Может быть, путем изменения какой-либо собственности?
1 ответ
Подтверждение происходит автоматически при условии, что обработчик сообщений не выдал исключение. Конечно, конкретное связующее может иметь проблему, но, помимо того, что, как я уверен, связующее GCP не имеет этой проблемы.
По сути, я пытаюсь сказать, как вы сказали: "… иди с СКС, чтобы не застрять…". Я хотел бы добавить "... чтобы не застрять с проблемами обработки сообщений вручную. . .". Это означает, что ACK /NACK, повторные попытки, DLQ и т. Д. Являются ответственностью SCS t и Spring в целом.
Да, есть крайние случаи, когда вещи, возможно, должны быть обработаны вручную, и определенные связыватели действительно предоставляют Подтверждение и другие обратные вызовы, но мы этого еще не сделали, так как меня больше беспокоит описанный вами симптом - мой слушатель продолжает получать одни и те же сообщения и более Это вряд ли возможно, если такой слушатель не выбрасывает исключение.
Итак, рассмотрите возможность предоставления более подробной информации или лучше разместите свой пример проекта, который воспроизводит проблему где-то на GitHub, чтобы мы могли взглянуть.