diff --git a/buildSrc/src/main/java/org/springframework/pulsar/gradle/docs/configprops/DocumentConfigurationProperties.java b/buildSrc/src/main/java/org/springframework/pulsar/gradle/docs/configprops/DocumentConfigurationProperties.java index a7bc61be..cde989ce 100644 --- a/buildSrc/src/main/java/org/springframework/pulsar/gradle/docs/configprops/DocumentConfigurationProperties.java +++ b/buildSrc/src/main/java/org/springframework/pulsar/gradle/docs/configprops/DocumentConfigurationProperties.java @@ -86,6 +86,8 @@ public class DocumentConfigurationProperties extends DefaultTask { c.accept("spring.pulsar.reactive.listener"); }); snippets.add("application-properties.pulsar-reactive-reader", "Pulsar Reactive Reader Properties", (c) -> c.accept("spring.pulsar.reactive.reader")); + snippets.add("application-properties.pulsar-binder", "Pulsar Binder Properties", (c) -> c.accept("spring.cloud.stream.pulsar.binder")); + snippets.add("application-properties.pulsar-bindings", "Pulsar Binding Properties", (c) -> c.accept("spring.cloud.stream.pulsar.bindings")); snippets.writeTo(this.outputDir.toPath()); } } diff --git a/spring-pulsar-docs/build.gradle b/spring-pulsar-docs/build.gradle index b3a404f6..5e476300 100644 --- a/spring-pulsar-docs/build.gradle +++ b/spring-pulsar-docs/build.gradle @@ -18,6 +18,7 @@ dependencies { api project (':spring-pulsar') api 'org.springframework.boot:spring-boot-starter' configurationProperties(project(path: ":spring-pulsar-spring-boot-autoconfigure", configuration: "configurationPropertiesMetadata")) + configurationProperties(project(path: ":spring-pulsar-spring-cloud-stream-binder", configuration: "configurationPropertiesMetadata")) observationDocs "io.micrometer:micrometer-docs-generator:$micrometerDocsVersion" } diff --git a/spring-pulsar-docs/src/main/asciidoc/application-properties.adoc b/spring-pulsar-docs/src/main/asciidoc/application-properties.adoc index 4a9bd4e0..a398d476 100644 --- a/spring-pulsar-docs/src/main/asciidoc/application-properties.adoc +++ b/spring-pulsar-docs/src/main/asciidoc/application-properties.adoc @@ -31,3 +31,7 @@ include::application-properties/pulsar-reactive-sender.adoc[] include::application-properties/pulsar-reactive-consumer.adoc[] include::application-properties/pulsar-reactive-reader.adoc[] + +include::application-properties/pulsar-binder.adoc[] + +include::application-properties/pulsar-bindings.adoc[] diff --git a/spring-pulsar-docs/src/main/asciidoc/pulsar-binder.adoc b/spring-pulsar-docs/src/main/asciidoc/pulsar-binder.adoc index f2d6ce60..3f393480 100644 --- a/spring-pulsar-docs/src/main/asciidoc/pulsar-binder.adoc +++ b/spring-pulsar-docs/src/main/asciidoc/pulsar-binder.adoc @@ -220,7 +220,7 @@ However, this is a basic non-partitioned topic, and if you want advanced feature Pulsar topic provisioner uses `PulsarAdministration` from the framework, which uses the `PulsarAdminBuilder.` For this reason, you need to set the `spring.pulsar.administration.service-url` property unless you are running Pulsar on the default server and port. -=== Specify partition count when creating the topic +=== Specifying partition count when creating the topic When creating the topic, you can set the partition count in two ways. First, you can set it at the binder level using the property `spring.cloud.stream.pulsar.binder.partition-count`. diff --git a/spring-pulsar-spring-cloud-stream-binder/build.gradle b/spring-pulsar-spring-cloud-stream-binder/build.gradle index f3f75e9f..3e05cdd7 100644 --- a/spring-pulsar-spring-cloud-stream-binder/build.gradle +++ b/spring-pulsar-spring-cloud-stream-binder/build.gradle @@ -1,10 +1,13 @@ plugins { id 'org.springframework.pulsar.spring-module' + id 'org.springframework.pulsar.configuration-properties' } description = 'Spring Cloud Stream Binder for Apache Pulsar' dependencies { + annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' + implementation project(':spring-pulsar-spring-boot-starter') api('org.springframework.cloud:spring-cloud-stream') { exclude group: 'javax.activation', module: 'javax.activation-api' diff --git a/spring-pulsar-spring-cloud-stream-binder/src/main/java/org/springframework/pulsar/spring/cloud/stream/binder/properties/PulsarBinderConfigurationProperties.java b/spring-pulsar-spring-cloud-stream-binder/src/main/java/org/springframework/pulsar/spring/cloud/stream/binder/properties/PulsarBinderConfigurationProperties.java index b814f8e1..a1f55ee6 100644 --- a/spring-pulsar-spring-cloud-stream-binder/src/main/java/org/springframework/pulsar/spring/cloud/stream/binder/properties/PulsarBinderConfigurationProperties.java +++ b/spring-pulsar-spring-cloud-stream-binder/src/main/java/org/springframework/pulsar/spring/cloud/stream/binder/properties/PulsarBinderConfigurationProperties.java @@ -37,6 +37,9 @@ public class PulsarBinderConfigurationProperties { @NestedConfigurationProperty private final ProducerConfigProperties producer = new ProducerConfigProperties(); + /** + * Number of topic partitions. + */ @Nullable private Integer partitionCount; diff --git a/spring-pulsar-spring-cloud-stream-binder/src/main/java/org/springframework/pulsar/spring/cloud/stream/binder/properties/PulsarConsumerProperties.java b/spring-pulsar-spring-cloud-stream-binder/src/main/java/org/springframework/pulsar/spring/cloud/stream/binder/properties/PulsarConsumerProperties.java index 2a6f509e..5451b2b8 100644 --- a/spring-pulsar-spring-cloud-stream-binder/src/main/java/org/springframework/pulsar/spring/cloud/stream/binder/properties/PulsarConsumerProperties.java +++ b/spring-pulsar-spring-cloud-stream-binder/src/main/java/org/springframework/pulsar/spring/cloud/stream/binder/properties/PulsarConsumerProperties.java @@ -29,18 +29,33 @@ import org.springframework.pulsar.autoconfigure.ConsumerConfigProperties; */ public class PulsarConsumerProperties extends ConsumerConfigProperties { + /** + * Pulsar {@link SchemaType} for this binding. + */ @Nullable private SchemaType schemaType; + /** + * Pulsar message type for this binding. + */ @Nullable private Class messageType; + /** + * Type for the Pulsar message key. + */ @Nullable private Class messageKeyType; + /** + * Type for the Pulsar message value. + */ @Nullable private Class messageValueType; + /** + * Number of topic partitions. + */ @Nullable private Integer partitionCount; diff --git a/spring-pulsar-spring-cloud-stream-binder/src/main/java/org/springframework/pulsar/spring/cloud/stream/binder/properties/PulsarProducerProperties.java b/spring-pulsar-spring-cloud-stream-binder/src/main/java/org/springframework/pulsar/spring/cloud/stream/binder/properties/PulsarProducerProperties.java index 6e1e2dc8..9e49ca05 100644 --- a/spring-pulsar-spring-cloud-stream-binder/src/main/java/org/springframework/pulsar/spring/cloud/stream/binder/properties/PulsarProducerProperties.java +++ b/spring-pulsar-spring-cloud-stream-binder/src/main/java/org/springframework/pulsar/spring/cloud/stream/binder/properties/PulsarProducerProperties.java @@ -29,18 +29,33 @@ import org.springframework.pulsar.autoconfigure.ProducerConfigProperties; */ public class PulsarProducerProperties extends ProducerConfigProperties { + /** + * Pulsar {@link SchemaType} for this binding. + */ @Nullable private SchemaType schemaType; + /** + * Pulsar message type for this binding. + */ @Nullable private Class messageType; + /** + * Type for the Pulsar message key. + */ @Nullable private Class messageKeyType; + /** + * Type for the Pulsar message value. + */ @Nullable private Class messageValueType; + /** + * Number of topic partitions. + */ @Nullable private Integer partitionCount;