import org.springframework.cloud.stream.annotation.StreamListener;
...
@RequiredArgsConstructor
@DataRouteByKey("MY_SERVICE_DATA_ROUTE_KEY") // (1)
public class MyCheckoutCompletionListener {
@Getter(AccessLevel.PROTECTED)
private final IdempotentMessageConsumptionService idempotentConsumptionService;
@StreamListener(MyCheckoutCompletionConsumer.CHANNEL) // (2)
public void listen(Message<CheckoutCompletionEvent> message) { // (3)
idempotentConsumptionService.consumeMessage(message, // (4)
CheckoutCompletionListener.class.getSimpleName(), this::processMessage); // (5)
}
protected void processMessage(Message<CheckoutCompletionEvent> message) {
CheckoutCompletionEvent event = message.getPayload();
// Your logic goes here
}
}