Подтвердите сообщение в Spring Cloud Stream

Я решил использовать SCS, чтобы не зацикливаться на конкретном брокере сообщений. Сказав это, я не нашел способа подтверждать сообщения автоматически или вручную, и все, что я нашел, это вещи в Spring Cloud GCP, такие как PubSubTemplate. Проблема в том, что мой слушатель продолжает получать одни и те же сообщения снова и снова. Есть ли способ автоматически подтвердить сообщение, как только оно будет получено в SCS, независимо от реализации обмена сообщениями? Может быть, изменив какое-то свойство?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
407
1

Ответы 1

Подтверждение происходит автоматически, если обработчик сообщений не выдал исключение. Конечно, у конкретного связующего может быть проблема, но это помимо того, что я уверен, что связующее GCP не имеет этой проблемы.

По сути, я пытаюсь сказать, как вы сказали: «... используйте SCS, чтобы не застрять с ...». Я бы добавил: «... чтобы не застрять в ручном решении проблем с обменом сообщениями...». Это означает, что за ACK/NACK, повторные попытки, DLQ и т. д. отвечает SCSt и Spring в целом.

Да, есть крайние случаи, когда что-то может потребоваться обрабатывать вручную, и некоторые связыватели действительно предоставляют подтверждение и другие обратные вызовы, но мы еще не там, поскольку меня больше беспокоит симптом, который вы описываете - мой слушатель продолжает получать одни и те же сообщения снова и снова. Это вряд ли возможно, если такой слушатель не выдает исключение.

Итак, рассмотрите возможность предоставления более подробной информации или лучше разместите свой пример проекта, который воспроизводит проблему, где-нибудь на GitHub, чтобы мы могли взглянуть.

Да, прошу прощения. Ваш ответ навел меня на правильный путь. Я слушал тему A и отправлял сообщения в B, но был еще один процесс, о котором я не знал, который повторно отправлял сообщения из темы B в тему A. Вскоре я удалю вопрос.

CCC 23.02.2019 01:01

Нет, пожалуйста, не удаляйте вопрос. Это противоречит цели. Пусть другие члены сообщества получат от этого пользу, если они столкнутся с таким же / похожим вопросом.

Oleg Zhurakousky 25.02.2019 08:14

поэтому логика AKC/NACK такова: если метод завершится без исключения - ACK, иначе - NACK?

orirab 06.03.2019 16:48

Другие вопросы по теме