Spring Cloud Stream GCP Как сделать повторную очередь ошибочных сообщений - PullRequest
0 голосов
/ 04 марта 2019

Согласно документам здесь поддерживаемые в настоящее время связующие ( Rabbit и Kafka ) полагаются на RetryTemplate.А для GCP ?

Подробно о моем проекте

Spring Boot версии 2.1.3.RELEASE

Зависимость pom.xml

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-gcp-starter-pubsub</artifactId>
    <version>1.1.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-gcp-pubsub-stream-binder</artifactId>
    <version>1.1.0.RELEASE</version>
</dependency>

application.properties

spring.cloud.stream.bindings.input.destination=inputtopic
spring.cloud.stream.bindings.output.destination=outputtopic

spring.cloud.gcp.project-id=testinggcp
spring.cloud.gcp.credentials.location=file:C:/Users/my_gcp_credentials.json

RestController

@EnableBinding({Source.class,Sink.class})
@RestController
public class SourceExample {

    @Autowired
    private Source source;


    @GetMapping("/newMessage")
    public UserMessage sendMessage(@RequestParam("messageBody") String messageBody,
                                   @RequestParam("username") String username) {
        UserMessage userMessage = new UserMessage(messageBody, username, LocalDateTime.now());

        this.source.output().send(new GenericMessage<>(userMessage));
        return userMessage;
    }


    @StreamListener(target = Sink.INPUT)
    public void handle(UserMessage userMessage) throws IOException {
        System.out.println(userMessage);
    }


}

1 Ответ

0 голосов
/ 05 марта 2019

Нет, Spring Cloud GCP Pub / Sub Binder не предоставляет никаких повторных попыток.

Легко использовать RequestHandlerRetryAdvice на @ServiceActivator вместо @StreamListener.Итак, все ваши ошибки в методе POJO будут повторены в соответствии с вашей конфигурацией.У RequestHandlerRetryAdvice есть опции RecoveryCallback, которые могут быть простыми ErrorMessageSendingRecoverer, где вы можете настроить обработку ошибок и отправить неправильное сообщение в какую-либо тему мертвых писем в GCP Pub / Sub.

См. Дополнительную информацию вСправочное руководство: https://docs.spring.io/spring-integration/docs/current/reference/html/#retry-advice

И немного ниже о Advising Endpoints Using Annotations.

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