实现一个SpringBoot应用程序,其中包含多个接收系统订阅多个发送系统,多个消费组和多个消费者。
1、添加依赖
在pom.xml文件中,添加kafka依赖
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.8.3</version>
</dependency>
2、配置Kafka
在application.properties或application.yml文件中,添加Kafka相关配置
spring:
kafka:
bootstrap-servers: localhost:9092
consumer:
group-id: my-consumer-group
auto-offset-reset: earliest
producer:
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
3、创建Kafka生产者
创建一个Kafka生产者类,用于发送消息到Kafka:
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Service;
@Service
public class KafkaProducer {
private final KafkaTemplate<String, String> kafkaTemplate;
public KafkaProducer(KafkaTemplate<String, String> kafkaTemplate) {
this.kafkaTemplate = kafkaTemplate;
}
public void sendMessage(String topic, String message) {
kafkaTemplate.send(topic, message);
}
}
4、创建Kafka消费者组1的消费者类
创建一个消费者类,用于消费Kafka中的消息:
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Service;
@Service
public class KafkaConsumerGroup1 {
@KafkaListener(topics = "topic1", groupId = "my-consumer-group")
public void consumeMessage(String message) {
System.out.println("Consumer Group 1: " + message);
}
}
5、创建Kafka消费者组2的消费者类
创建另一个消费者类,用于消费Kafka中的另一个主题的消息:
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Service;
@Service
public class KafkaConsumerGroup2 {
@KafkaListener(topics = "topic2", groupId = "my-consumer-group")
public void consumeMessage(String message) {
System.out.println("Consumer Group 2: " + message);
}
}