Spring Cloud Stream (Kafka) параметризует указанный канал ошибки {destination}. {Group} .errors - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь проверить, может ли канал ошибки, который я передаю @ServiceActivator, быть ограниченным / параметризованным, ссылаясь на значение, указанное в YAML, вместо жесткого кодирования фактического назначения и группы потребителей в самом коде.

@ServiceActivator(
        // I do not want to hardcode destination and consumer group here
        inputChannel = "stream-test-topic.my-consumer-group.errors"
    )
    public void handleError(ErrorMessage errorMessage) {
        // Getting exception objects
        Throwable errorMessagePayload = errorMessage.getPayload();
        log.error("exception occurred", errorMessagePayload);

        // Get message body
        Message<?> originalMessage = errorMessage.getOriginalMessage();
        if (originalMessage != null) {
            log.error("Message Body: {}", originalMessage.getPayload());
        } else {
            log.error("The message body is empty");
        }
    }

1 Ответ

1 голос
/ 06 августа 2020

Вы не можете этого сделать с @ServiceActivator; используйте вместо этого Java DSL:

@Value("${error.channel}")
String errors;

@Bean
public IntegrationFlow flow() {
    return IntegrationFlows.from(this.errors)
            .handle(msg -> {
                System.out.println(msg);
            })
            .get();
}

И установите

error:
  channel: stream-test-topic.my-consumer-group.errors
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...