消息队列简述

Kafka入门


一、简介

1.1 消息队列简介

1.1.1 什么是消息队列

消息队列:缩写:MQ,一中用来存储消息的队列;

代码如下(示例):

1.创建一个保存字符串的的队列
Queue<String> stringQueue  = new LinkList<String>();

2.往消息队列中存放消息
stringQueue.offer("hello");

3.从队列中取出消息
System.out.println(stringQueue.poll());

上述代码,创建了一个队列,往队列中添加了消息,然后又从队列中取出了一个消息;我们可简单将消息队列理解为将需要传输的数据保存在队列中

1.1.2 消息队列中间件

消息队列中间件就是用来存储消息的软件(组件)。例如:网站分析用户的行为,我们需要记录一些用户的访问日志。这些一条条日志,可以看成是一条条消息,我们将他保存在消息队列中。将来会有些应用程序来处理这些日志,就可以随时将这些消息取出来处理。

目前市面上的消息队列有很多,例如:Kafka、RabbitMQ、ActiveMQ、RocketMQ、ZeroMQ等;

1.1.3 消息队列应用场景

1.1.3.1 异步处理

电商网站中,用户注册时候,需要将新用户的信息保存在数据库中,同时还需要额外发送注册的邮件通知,以及短信的注册码给用户;因为发送邮件,发送注册短信需要连接外部的服务器,要额外等待一段时间,此时,就可以使用消息队列来进行一步处理,从而实现快速响应。
在这里插入图片描述

1.1.3.2 系统解耦

在这里插入图片描述

1.1.3.3 流量削峰

在这里插入图片描述

1.1.3.4 日志处理(大数据领域)

大型电商网站,App等需要去分析用户的行为,要根据用户的行为来发现用户 喜好和活跃情况,需要在页面中收集大量的用户访问信息;
在这里插入图片描述

1.1.4 生产者、消费者模型

java服务器武器开发,交互模型
在这里插入图片描述
JDBC访问Mysql 数据库,其交互模型:
在这里插入图片描述
它也是一种请求响应模型,只不过他不再是基于http协议,而是基于Mysql数据库通信协议;

而我们如果基于消息中间件来编程,此时的交互模式:生产者,消费者;
在这里插入图片描述

1.1.5 消息队列的两种模式

1.1.5.1 点对点模式

在这里插入图片描述
消息发送者生产消息发送到队列中,然后接收者从消息队列中取出消息并且消费,消息被消费之后,队列中不再有存储;

点对点模式的特点:
每个消息只有一个生产者和接收者(消息一旦被消费,消息将不会在队列中);
发送者和接收者之间没有依赖性,发送者发送消息之后,不管有没接收者在运行,都不会影响到发送者下次发送消息;
接收者在接收消息之后需要队列成功应答,已方便队列删除消息;

1.1.5.2 发布订阅模式

在这里插入图片描述
发布/订阅模式特点:
每个消息可以有多个订阅者;
发布者和订阅者在时间上依赖性,针对某个主题的订阅者,他必须创建一个订阅者之后,才可以消费发布者的消息;
为了消费消息,订阅者需要提前订阅该主角,并且保持在线运行;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值