Message processing guarantees with spring-cloud-stream-binder-kafka functional binding

Viewed 127

Given default configuration and this binding

@Bean
public Function<Flux<Message<Input>>, Flux<Message<Output>>> process() {
  return input -> input
    .map(message -> {
      // simplified
      return MessageBuilder.build();
  });
}

Is there any guarantee that input message offset is commited after output is written to Kafka? I don´t need full Transactions, and I can live with at-least-once delivery and possible duplicates, but I cannot loose output message. I was unable to find this exact scenario in docs, and I believe previous channel-based binding worked as I need it to, since it was blocking by nature, but I am not sure about functional.

0 Answers
Related