1功能需求
有这么多消息中间件,为什么要使用kafka呢,Kafka,在大数据领域,Kafka目前是使用最多的框架,为了适应项目中大数据量的吞吐,实时流量计算等功能。
2定义
2.1约束定义
1.Topic命名约束:
Topic分为单类和混合消息,不同类消息命名约束如下:
- 单类:heima.topic.[自定义名称].single
- 混合类: heima.topic.[自定义名称].bus
将工具类拷贝到common模块下的kafka包中,为了连接上kafka,创建配置文件:
kafka.hosts=localhost:9092
kafka.group=heima.${profiles.name}.${spring.applicaiton.name}
#单消息通道,需要以single结尾
kafka.topic.admin-test=${kafka.topic.admin-test}
2.2重点封装类:
kafkaMessage:封装了消息内容,还封装了消息类型,当前的时间,自己封装消息的时候一定要去继承KafKaMessage
kafkaSender,注入了kafkaTemplate:用来发送消息
kafkaTmplate.send(topic,key,message);
topic:消息名称
message:具体消息的内容
KafkaProducerConfig用来初始化KafkaTemplate的配置类
KafkaListener用来接受消息,所有接收消息的类,都需要实现这个类
发送和接收都依赖于KafkaTopicConfig.需要去maven_test配置中读取属性。
我们在发送消息的时候,需要在maven_test.properties中定义消息中定义消息队列的名称,同时在KafkaTopicConfig中添加对应的消息队列名称的属性。
实现设计
消息的生产者
@SpringBootTest
@Runwith
public class KafkaTest{
@Autowired
private KafkaTemplate<String,String> kafkaTemplate;
@Test
public void test(){
kafkaTemplate.send("topic.test","123KEY","itcast...");
}
}
消息的消费者
@compoent
public class TestKafkaListener implement KafkaListener{
@Override
public String topic(){
return "topic.test";
}
@Override
public void onMessage(ConsummerRecord data,Consumer consumer){
System.out.println("===接收到的消息为===>"+data);
}
@Override
public void onMessage(Object o){
}
}
# 开发实现