GH-3145 : Sample for next gen consumer-group rebalance protocol
Fixes: #3145 * Add a sample demonstrating the next-generation consumer-group rebalance protocol. * Provide a docker-compose script for spinning up a `kraft` based Kafka broker since the new consumer protocol only works in `kraft` mode. * Add README explaining the sample.
This commit is contained in:
committed by
GitHub
parent
bd8b82e9dd
commit
00fd11b51c
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright 2022-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.sample07;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.kafka.annotation.EnableKafka;
|
||||
|
||||
/**
|
||||
* New consumer rebalance protocol sample which purpose is only to demonstrate the application
|
||||
* of the New Consumer Rebalance Protocol in Spring Kafka.
|
||||
*
|
||||
* @author Sanghyeok An.
|
||||
*
|
||||
* @since 3.3
|
||||
*/
|
||||
|
||||
@EnableKafka
|
||||
@SpringBootApplication
|
||||
public class Sample07Application {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(Sample07Application.class, args);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright 2022-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.sample07;
|
||||
|
||||
import org.springframework.kafka.annotation.KafkaListener;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* New consumer rebalance protocol sample which purpose is only to demonstrate the application
|
||||
* of the New Consumer Rebalance Protocol in Spring Kafka.
|
||||
* Each consumer will subscribe test-topic with different group id.
|
||||
* Then, new consumer rebalance protocol will be completed successfully.
|
||||
*
|
||||
* @author Sanghyeok An.
|
||||
*
|
||||
* @since 3.3
|
||||
*/
|
||||
|
||||
@Component
|
||||
public class Sample07KafkaListener {
|
||||
|
||||
@KafkaListener(topics = "test-topic", groupId = "sample07-1")
|
||||
public void listenWithGroup1(String message) {
|
||||
System.out.println("Received message at group sample07-1: " + message);
|
||||
}
|
||||
|
||||
@KafkaListener(topics = "test-topic", groupId = "sample07-2")
|
||||
public void listenWithGroup2(String message) {
|
||||
System.out.println("Received message at group sample07-2: " + message);
|
||||
}
|
||||
}
|
||||
17
samples/sample-07/src/main/resources/application.yaml
Normal file
17
samples/sample-07/src/main/resources/application.yaml
Normal file
@@ -0,0 +1,17 @@
|
||||
spring:
|
||||
docker:
|
||||
compose:
|
||||
lifecycle-management: start_and_stop
|
||||
start:
|
||||
command: up
|
||||
stop:
|
||||
command: down
|
||||
timeout: 10s
|
||||
kafka:
|
||||
consumer:
|
||||
bootstrap-servers: localhost:10000
|
||||
group-id: sample07
|
||||
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
|
||||
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
|
||||
properties:
|
||||
group.protocol: consumer
|
||||
Reference in New Issue
Block a user