Skip to content

Commit f758433

Browse files
committed
Extend springwolf-kafka-example to include documentation of kafka keys as message binding by using annotations
1 parent df6b997 commit f758433

File tree

3 files changed

+28
-3
lines changed

3 files changed

+28
-3
lines changed

springwolf-examples/springwolf-kafka-example/src/main/java/io/github/stavshamir/springwolf/example/consumers/ExampleClassLevelKafkaListener.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.github.stavshamir.springwolf.asyncapi.scanners.channels.operationdata.annotation.AsyncOperation;
44
import io.github.stavshamir.springwolf.asyncapi.scanners.channels.operationdata.annotation.AsyncListener;
55
import io.github.stavshamir.springwolf.asyncapi.scanners.channels.operationdata.annotation.KafkaAsyncOperationBinding;
6+
import io.github.stavshamir.springwolf.asyncapi.scanners.channels.operationdata.annotation.KafkaAsyncOperationBinding.KafkaAsyncMessageBinding;
67
import io.github.stavshamir.springwolf.example.dtos.AnotherPayloadDto;
78
import io.github.stavshamir.springwolf.example.dtos.ExamplePayloadDto;
89
import lombok.extern.slf4j.Slf4j;
@@ -12,6 +13,7 @@
1213

1314
import javax.money.MonetaryAmount;
1415

16+
import static io.github.stavshamir.springwolf.asyncapi.scanners.channels.operationdata.annotation.KafkaAsyncOperationBinding.KafkaAsyncMessageBinding.KafkaKeyTypes.STRING_KEY;
1517
import static org.springframework.kafka.support.mapping.AbstractJavaTypeMapper.DEFAULT_CLASSID_FIELD_NAME;
1618

1719

@@ -48,7 +50,12 @@ public void receiveAnotherPayload(AnotherPayloadDto payload) {
4850
@KafkaAsyncOperationBinding(
4951
bindingVersion = "1",
5052
clientId = "foo-clientId",
51-
groupId = "#{'foo-groupId'}"
53+
groupId = "#{'foo-groupId'}",
54+
messageBinding = @KafkaAsyncMessageBinding(
55+
keyType = STRING_KEY,
56+
bindingVersion = "1",
57+
description = "Kafka Consumer Message Key"
58+
)
5259
)
5360
public void receiveMonetaryAmount(MonetaryAmount payload) {
5461
log.info("Received new message in multi-payload-topic: {}", payload.toString());

springwolf-examples/springwolf-kafka-example/src/main/java/io/github/stavshamir/springwolf/example/producers/ExampleProducer.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
import io.github.stavshamir.springwolf.asyncapi.scanners.channels.operationdata.annotation.AsyncOperation;
44
import io.github.stavshamir.springwolf.asyncapi.scanners.channels.operationdata.annotation.AsyncPublisher;
55
import io.github.stavshamir.springwolf.asyncapi.scanners.channels.operationdata.annotation.KafkaAsyncOperationBinding;
6+
import io.github.stavshamir.springwolf.asyncapi.scanners.channels.operationdata.annotation.KafkaAsyncOperationBinding.KafkaAsyncMessageBinding;
67
import io.github.stavshamir.springwolf.example.dtos.ExamplePayloadDto;
78
import org.springframework.beans.factory.annotation.Autowired;
89
import org.springframework.kafka.core.KafkaTemplate;
910
import org.springframework.stereotype.Component;
1011

12+
import static io.github.stavshamir.springwolf.asyncapi.scanners.channels.operationdata.annotation.KafkaAsyncOperationBinding.KafkaAsyncMessageBinding.KafkaKeyTypes.STRING_KEY;
1113
import static io.github.stavshamir.springwolf.example.configuration.KafkaConfiguration.PRODUCER_TOPIC;
1214
import static org.springframework.kafka.support.mapping.AbstractJavaTypeMapper.DEFAULT_CLASSID_FIELD_NAME;
1315

@@ -38,7 +40,12 @@ public class ExampleProducer {
3840
))
3941
@KafkaAsyncOperationBinding(
4042
bindingVersion = "1",
41-
clientId = "foo-clientId"
43+
clientId = "foo-clientId",
44+
messageBinding = @KafkaAsyncMessageBinding(
45+
keyType = STRING_KEY,
46+
bindingVersion = "1",
47+
description = "Kafka Producer Message Key"
48+
)
4249
)
4350
public void sendMessage(ExamplePayloadDto msg) {
4451
kafkaTemplate.send(PRODUCER_TOPIC, msg);

springwolf-examples/springwolf-kafka-example/src/test/resources/asyncapi.json

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,17 @@
167167
},
168168
"headers" : {
169169
"$ref" : "#/components/schemas/SpringKafkaDefaultHeaders-MonetaryAmount"
170+
},
171+
"bindings" : {
172+
"kafka" : {
173+
"key" : {
174+
"type" : "string",
175+
"description" : "Kafka Consumer Message Key",
176+
"exampleSetFlag" : false,
177+
"types" : [ "string" ]
178+
},
179+
"bindingVersion" : "1"
180+
}
170181
}
171182
} ]
172183
}
@@ -414,4 +425,4 @@
414425
}
415426
},
416427
"tags" : [ ]
417-
}
428+
}

0 commit comments

Comments
 (0)