Обработка ошибок Spring Cloud Stream с использованием внешнего назначения - PullRequest
0 голосов
/ 06 июля 2018

Я читал документацию Spring-Cloud-Stream, в частности Обработка ошибок :

@StreamListener(Sink.INPUT) // destination name 'input.myGroup'
public void handle(Person value) {
    throw new RuntimeException("BOOM!");
}

@ServiceActivator(inputChannel = Processor.INPUT + ".myGroup.errors") //channel name 'input.myGroup.errors'
public void error(Message<?> message) {
    System.out.println("Handling ERROR: " + message);
}

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

Использование аннотации @StreamListener предназначено специально для определить привязки, которые соединяют внутренние каналы и внешние направления. С учетом того, что конкретный канал ошибок назначения делает НЕ имеют связанного внешнего назначения, такой канал является прерогатива Spring Integration (SI). Это означает, что обработчик для такого назначения должен быть определен один из обработчиков SI аннотации (например, @ServiceActivator, @Transformer и т. д.).

Я также проследил весь этот поток о создании канала ошибок , где он подтверждает, что наличие аннотации @ServiceActivator не создаст внешнего адресата для распространения ошибок.

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

  1. Что конкретно делает @ServiceActivator или что это за функция, предоставляемая этой конкретной аннотацией?
  2. Каков будет хороший подход для распространения ошибок по внешнему адресу? (Скажем, например, тема Кафки).
  3. Публикует ли ошибка во внешнем месте назначения для последующего ее использования по хорошей схеме?

1 Ответ

0 голосов
/ 06 июля 2018

@ ServiceActivator будет специально для внутренней обработки ошибок (т. Е. Тем же приложением). В тех случаях, когда вы хотите, чтобы ошибки отправлялись в тему Kafka, чтобы их мог использовать внешний пользователь, вам следует использовать DLQ. Вы можете найти более подробную информацию здесь https://docs.spring.io/spring-cloud-stream/docs/Elmhurst.RELEASE/reference/htmlsingle/#kafka-dlq-processing

Пожалуйста, дайте нам знать, если у вас есть еще вопросы

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