почему исключения не перехватываются в errorChannel пружинной интеграции, когда сообщения отправляются с использованием шины управления - PullRequest
0 голосов
/ 27 мая 2019

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

теперь, когда я пытаюсь воспроизвести это сообщение с использованием шины управления, если возникла исключительная ситуация, я вижу ошибку в моих журналах, но исключение не было перехваченоby errorChannel.

вот код, который я использовал:

    @Qualifier("control-bus.replay.channel")
    MessageChannel controlBus;

    public void redo(Message<?> msg){
      controlBus.send(
      MessageBuilder.withPayload(
      "@mybean.transform(headers['myMessage'])") 
      .setHeader("myMessage", msg).build());
   }

Я пытался добавить errorChannel в заголовок сообщения, но не сработал.

, поэтомуМне интересно, является ли это поведение шины управления по умолчанию и как я могу переопределить его.

1 Ответ

0 голосов
/ 28 мая 2019

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

По умолчанию DirectChannel используется для соединения конечных точек.Когда вы отправляете сообщение непосредственно в этот канал (как вы делаете в своем фрагменте кода), исключение генерируется непосредственно для этого вызывающего абонента, игнорируя все возможные конфигурации обработки ошибок.Представьте, что вы делаете обычный стек вызовов Java без какого-либо смещения потока.Таким образом, исключение просто бросили вам.Конечно, это работает хорошо, если весь ваш поток на этом канале является прямым: между ними нет никакой очереди или конфигурации каналов исполнителя.

Отсюда было бы здорово увидеть ваши control-bus.replay.channel и конфигурацию шины управления..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...