Повторная попытка с сохранением состояния с помощью Spring Cloud Stream

Я реализовал RetryListener, который отслеживает сбои в приложении SCSt с Kafka. Мне интересно, есть ли способ передать дополнительную информацию в RetryContext, а затем в повторную операцию.

Поток:

  1. Операция не удалась

  2. Вызывается RetryListener.onError (контекст RetryContext, обратный вызов RetryCallback, Throwable throwable). <--- Я хочу передать дополнительную информацию в контекст

  3. Операция повторяется <--- Я хочу передать дополнительную информацию для повторной попытки (возможно, через обратный вызов?)

Я просматривал исходный код и знаю, что можно передать statefulboolean в RetryingMessageListenerAdapter, но я не уверен, как передать это во фреймворк.

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

Ответы 1

Ответ принят как подходящий

В потоке слушателя ...

RetrySynchronizationManager.getContext().setAttribute("foo", "bar");

/**
 * Global variable support for retry clients. Normally it is not necessary for
 * clients to be aware of the surrounding environment because a
 * {@link RetryCallback} can always use the context it is passed by the
 * enclosing {@link RetryOperations}. But occasionally it might be helpful to
 * have lower level access to the ongoing {@link RetryContext} so we provide a
 * global accessor here. The mutator methods ({@link #clear()} and
 * {@link #register(RetryContext)} should not be used except internally by
 * {@link RetryOperations} implementations.
 * 
 * @author Dave Syer
 * 
 */
public final class RetrySynchronizationManager {

Возможно, я иду по неправильному пути, и логическое значение stateful мне не нужно. Есть ли способ передать информацию коду, выполняющему повторную попытку? Мне нужно поддерживать идентификатор при повторных попытках.

user 25.10.2018 19:38

Зачем нужен stateful? Я думал, вы просто хотите передать некоторую дополнительную информацию от @StreamListener к RetryListener и, возможно, наоборот.

Gary Russell 25.10.2018 20:21

Я думаю, что увяз в семантике документа, и я не уверен, что stateful - это то, что мне нужно. То, что мне нужно, - это возможность передать больше информации для повторной попытки, например ID, поэтому следующая повторная попытка может ссылаться на предыдущий ID.

user 25.10.2018 22:47

OK; поэтому установите атрибут в RetryListener.open(); получить доступ к нему в прослушивателе потока с помощью диспетчера синхронизации; добавьте туда дополнительные атрибуты, если хотите, чтобы вы могли получить к ним доступ в методе onError(). И т.д ... и т.д ...

Gary Russell 25.10.2018 23:03

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