kafka简单dome
kafka是基于zookeeper的,所以需要先安装zokeeper
zookeeper
#docker拉取zookeeper
docker pull wurstmeister/zookeeper
#安装zookeeper
docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper
kafka
#docker拉取kafka
docker pull wurstmeister/kafka
#安装kafka
docker run -d --name kafka -p 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=127.0.0.1 --env KAFKA_ADVERTISED_PORT=9092 wurstmeister/kafka
项目引入kafka<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-kafka</artifactId>
<version>3.1.2</version>
</dependency>
kafka配置文件
spring:
kafka:
bootstrap-servers: localhost:9092 #kafka服务地址
producer:
value-serializer: org.apache.kafka.common.serialization.StringSerializer
consumer:
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
创建生产者
@Component
public class KafkaSender {
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
public void send(String msg) {
ListenableFuture<SendResult<String, String>> future = kafkaTemplate.send("testTopic", msg);
future.addCallback(success -> System.out.println(success.getRecordMetadata().topic() + success.getRecordMetadata().partition())
, fail -> System.out.println(fail.getMessage()));
}
}
创建消费者
@Component
public class KafkaCusumer {
@KafkaListener(topics = {"testTopic"},groupId = "group1")
public void fun(String msg){
System.out.println(msg);
}
@KafkaListener(topics = {"testTopic"},groupId = "group1")
public void fun1(String msg){
System.out.println("2:"+msg);
}
@KafkaListener(topics = {"testTopic"},groupId = "group1")
public void fun2(String msg){
System.out.println("3:"+msg);
}
}
groupId相同则会进行负载均衡,一条消息只能一个相同的groupId的接收到
正文到此结束
热门推荐
该篇文章的评论功能已被站长关闭