利用kafka发送系统

文章介绍了Kafka作为消息队列框架的作用,如何使用阻塞队列实现进程间通信,以及Kafka的Broker、Topic和Partition概念。通过SpringBoot整合Kafka,展示了生产者和消费者如何交互,包括配置、发送与接收消息。最后,文章提到了使用Kafka发送用户通知的场景,如评论、点赞和关注事件。
摘要由CSDN通过智能技术生成

kafka是一种消息队列框架。

如果不用消息队列框架,就需要用阻塞队列来实现发送系统消息和系统通知

1.阻塞队列

阻塞队列是一种用来解决进程间通信的方式

阻塞队列依靠自带的两个方法put(往队列里面存数据)和take(从队列里面取数据)

 2.Kafka

有多个Broker,每个Broker中有很多Topic,对Topic进行分区,分成Partition1,Partition2,Partition3......,比如第0-99条消息放到Partition1,第100~199条消息放到Partition2,第200~299条消息放到Partition3.........Partition是真正保存消息的地方

Partition中的每条消息都有自己的offset索引

 同一Topic的Partition可以分布在不同的Broker上,每个Partition可以有多个副本(备份),也就是主从复制,Leader和Follower,以此来实现高可用,Leader一旦挂掉,Follower就顶上去

3.springboot 整合kafka

step1:引入spring-kafka的依赖

       <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
            <version>2.9.0</version>
        </dependency>

step2: 在application.properties文件中对kafka进行配置

spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.consumer.group-id=community-consumer-group
spring.kafka.consumer.enable-auto-commit=true

#自动提交频率
spring.kafka.consumer.auto-commit-interval=3000  

测试:生产者生产一个东西,看消费者是否能够自动接收到这个东西

核心:

生产者往某个topic中发送消息

 kafkaTemplate.send(topic,content);

消费者监听某个topic:

  @KafkaListener(topics={"test"})   //监听哪个topic
//生产者
@Component
class  KafkaProducer
{
    @Autowired
    private KafkaTemplate kafkaTemplate;

    public  void  sendMessage(String topic,String content)
    {
        kafkaTemplate.send(topic,content);//往哪个topic里面发送什么消息
    }
}

//消费者
@Component
class KafkaConsumer
{
    @KafkaListener(topics={"test"})   //监听哪个topic

    public void  handleMessage(ConsumerRecord record)
    {
        System.out.println(record.value() );
    }
}


@SpringBootTest
class EmsVueApplicationTests
{

     @Autowired
     private KafkaProducer kafkaProducer;


    @Test
    public  void  testKafka() throws InterruptedException {
        kafkaProducer.sendMessage( "test" ,"你好");

        kafkaProducer.sendMessage( "test" ,"在吗");

        Thread.sleep(1000*10);

    }
}


4.实战:使用kafka给用户发送通知

当有别的用户评论你的帖子,要给用户发送通知

当有别的用户给你的帖子点赞了,也要给用户发送通知

当有别的用户关注了你,也要给用户发送通知

可以把评论,点赞,关注分别设置成一个topic

这三个topic里面的消息最终都是要往message表里面插入一条数据,表示给用户发送消息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值