From f4d10811ca023b2d406a28c44f8e5bb58bff37b4 Mon Sep 17 00:00:00 2001 From: Chris Bono Date: Sun, 22 Jan 2023 12:03:36 -0600 Subject: [PATCH] Binder sample app uses complex types --- .../binder/SpringPulsarBinderSampleApp.java | 15 ++++++-- .../src/main/resources/application.yml | 34 ++++++++++++++----- 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/spring-pulsar-sample-apps/sample-pulsar-binder/src/main/java/org/springframework/pulsar/sample/binder/SpringPulsarBinderSampleApp.java b/spring-pulsar-sample-apps/sample-pulsar-binder/src/main/java/org/springframework/pulsar/sample/binder/SpringPulsarBinderSampleApp.java index 06e78195..d04ae53c 100644 --- a/spring-pulsar-sample-apps/sample-pulsar-binder/src/main/java/org/springframework/pulsar/sample/binder/SpringPulsarBinderSampleApp.java +++ b/spring-pulsar-sample-apps/sample-pulsar-binder/src/main/java/org/springframework/pulsar/sample/binder/SpringPulsarBinderSampleApp.java @@ -17,6 +17,7 @@ package org.springframework.pulsar.sample.binder; import java.util.function.Consumer; +import java.util.function.Function; import java.util.function.Supplier; import org.slf4j.Logger; @@ -29,7 +30,7 @@ import org.springframework.context.annotation.Bean; @SpringBootApplication public class SpringPulsarBinderSampleApp { - private final Logger logger = LoggerFactory.getLogger(SpringPulsarBinderSampleApp.class); + private final Logger logger = LoggerFactory.getLogger(this.getClass()); public static void main(String[] args) { SpringApplication.run(SpringPulsarBinderSampleApp.class, args); @@ -41,8 +42,16 @@ public class SpringPulsarBinderSampleApp { } @Bean - public Consumer timeLogger() { - return s -> this.logger.info("Hello binder: " + s); + public Function timeProcessor() { + return (rawTime) -> new EnhancedTime(rawTime, "5150"); + } + + @Bean + public Consumer timeLogger() { + return (time) -> this.logger.info("TIME -> {}", time); + } + + record EnhancedTime(String time, String extra) { } } diff --git a/spring-pulsar-sample-apps/sample-pulsar-binder/src/main/resources/application.yml b/spring-pulsar-sample-apps/sample-pulsar-binder/src/main/resources/application.yml index b460aeb2..597a2806 100644 --- a/spring-pulsar-sample-apps/sample-pulsar-binder/src/main/resources/application.yml +++ b/spring-pulsar-sample-apps/sample-pulsar-binder/src/main/resources/application.yml @@ -1,21 +1,37 @@ spring: cloud: function: - definition: timeSupplier;timeLogger + definition: timeSupplier;timeProcessor;timeLogger; stream: bindings: - timeLogger-in-0: - destination: timeSupplier-out-0 - consumer: - use-native-decoding: true timeSupplier-out-0: producer: use-native-encoding: true + timeProcessor-in-0: + destination: timeSupplier-out-0 + consumer: + use-native-decoding: true + timeProcessor-out-0: + destination: timeProcessor-out-0 + producer: + use-native-encoding: true + timeLogger-in-0: + destination: timeProcessor-out-0 + consumer: + use-native-decoding: true pulsar: bindings: - timeLogger-in-0: - consumer: - schema-type: STRING timeSupplier-out-0: producer: - schema-type: STRING \ No newline at end of file + schema-type: STRING + timeProcessor-in-0: + consumer: + schema-type: STRING + timeProcessor-out-0: + producer: + schema-type: JSON + message-type: org.springframework.pulsar.sample.binder.SpringPulsarBinderSampleApp.EnhancedTime + timeLogger-in-0: + consumer: + schema-type: JSON + message-type: org.springframework.pulsar.sample.binder.SpringPulsarBinderSampleApp.EnhancedTime