Skip to content

Instantly share code, notes, and snippets.

@danielkec
Created June 22, 2020 20:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danielkec/cb8d474d3c6baf40bbeb124f37ad9cbf to your computer and use it in GitHub Desktop.
Save danielkec/cb8d474d3c6baf40bbeb124f37ad9cbf to your computer and use it in GitHub Desktop.
Channel<String> fromKafka = Channel.<String>builder()
.publisherConfig(KafkaConnector.configBuilder()
.bootstrapServers("localhost:9092")
.groupId("example-group-1")
.topic("messaging-test-topic-1")
.autoOffsetReset(KafkaConfigBuilder.AutoOffsetReset.LATEST)
.enableAutoCommit(false)
.keyDeserializer(StringDeserializer.class)
.valueDeserializer(StringDeserializer.class)
.build()
)
.build();
// Prepare Kafka connector, can be used by any channel
KafkaConnector kafkaConnector = KafkaConnector.create();
Messaging.builder()
.connector(kafkaConnector)
.subscriber(fromKafka, ReactiveStreams.<Message<String>>builder()
//Apply back-pressure, flatMapCompletionStage request one by one
.flatMapCompletionStage(message -> {
return CompletableFuture.runAsync(() -> {
//Do something lengthy
Multi.timer(300, TimeUnit.MILLISECONDS, executor)
.first()
.await();
//Acknowledge message has been consumed
message.ack();
});
})
.ignore())
.build()
.start();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment