首页 > 其他分享 >消息队列篇

消息队列篇

时间:2023-05-17 21:13:08浏览次数:50  
标签:订阅 存储 队列 用户 接收者 消息

本文章学习资源黑马程序员Kafka视频教程及资料,黑马程序员YYDS

一、简介

1.消息队列简介

消息队列,英文名:Message Queue,经常缩写为MQ。从字面上来理解,消息队列是一种用来存储消息的队列。我们可以简单理解消息队列就是将需要传输的数据存放在队列中。很多时候消息队列不是一个永久性的存储,是作为临时存储存在的(设定一个期限:设置消息在MQ中保存10天)

2.消息队列中间件

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

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

3.消息中间件的应用场景

3.1 异步处理

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

image

3.2 系统解耦

原先一个微服务是通过接口(Feign)调用另一个微服务,这时候耦合很严重,只要接口发生变化就会导致系统不可用。
使用消息队列可以将系统进行解耦合,现在第一个微服务可以将消息放入到消息队列中,另一个微服务可以从消息队列中把消息取出来进行处理,进行系统解耦。

image

3.3 流量削峰

因为消息队列是低延迟、高可靠、高吞吐的,可以应对大量并发。

image

3.4 日志处理(大数据领域常见)

大型电商网站(淘宝、京东、国美、苏宁...)、App(抖音、美团、滴滴等)等需要分析用户行为,要根据用户的访问行为来发现用户的喜好以及活跃情况,需要在页面上收集大量的用户访问信息。可以使用消息队列作为临时存储,或者一种通信管道。
image

4.消息队列模型

生产者、消费者模型
我们之前学习过Java的服务器开发,Java服务器端开发的交互模型是这样的:
image

我们之前也学习过使用Java JDBC来访问操作MySQL数据库,它的交互模型是这样的:

image
它也是一种请求响应模型,只不过它不再是基于http协议,而是基于MySQL数据库的通信协议。

而如果我们基于消息队列来编程,此时的交互模式成为:生产者、消费者模型。
image

5.消息队列的俩种模式

5.1 点对点模式

image

消息发送者生产消息发送到消息队列中,然后消息接收者从消息队列中取出并且消费消息。消息被消费以后,消息队列中不再有存储,所以消息接收者不可能消费到已经被消费的消息。

点对点模式特点:

  • 每个消息只有一个接收者(Consumer)(即一旦被消费,消息就不再在消息队列中)
  • 发送者和接收者间没有依赖性,发送者发送消息之后,不管有没有接收者在运行,都不会影响到发送者下次发送消息;
  • 接收者在成功接收消息之后需向队列应答成功,以便消息队列删除当前接收的消息;
5.2 发布订阅模式

image

发布/订阅模式特点:

  • 每个消息可以有多个订阅者;
  • 发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息。
  • 为了消费消息,订阅者需要提前订阅该角色主题,并保持在线运行;

标签:订阅,存储,队列,用户,接收者,消息
From: https://www.cnblogs.com/yydsDW/p/17407138.html

相关文章

  • STM32环形串口队列程序 大数据串口收发 实时不丢包 串口程序平常产品开发中编写或移
    STM32环形串口队列程序大数据串口收发实时不丢包串口程序平常产品开发中编写或移植的程序并亲自测试通过,均为工程文件格式,可直接编译使用。注:毫无基础的请勿拍,程序文件不接受退货。该程序为大数据量吞吐的串口收发例程,中断接收,边收边发,采用大数据环形队列,处理过程超快不丢包,接......
  • 用Python开发输入法后台(2)——输入‘我’的消息交互过程
    用户操作用户输入‘w’,显示以‘w’开始的单字用户输入数字键,比如‘1’,选择一个单字‘我’‘我’字上屏,回到初始状态消息交互过程init,onActivate切换到当前输入法时,后台会发送这两个消息filterKeyDown用户输入‘w’时,后台发送此消息,表示指定keycode是否处理还是忽略,pyth......
  • python调用企业微信webhook发送消息
    官方文档:群机器人配置说明-文档-企业微信开发者中心发送图片解决:{"errcode":301019,"errmsg":"mediamd5notmatch,hint:[1684315383531332325922225],fromip:222.71.242.114,moreinfoathttps://open.work.weixin.qq.com/devtool/query?e=301019"}这个是瞎......
  • 7935: 最大值问题 单调队列
    描述 给定n个正整数,crq先选了第1~k个数,要求yuyu求出最大值,yuyu轻松完成,crq直接甩出一堆,要求第2~k+1个,3~k+2个,...,n-k+1~n个,全部都求出来,之后便轻松休息了。  输入 第一行两个整数 n和k(1≤k≤n≤106)。第二行 n个整数,表示编号1~n方格中的数字ai(1≤ai≤3×107)。......
  • [重磅消息]AutoMagic自动化测试平台开源
    作者介绍:网名:Ray 2018年3月29日,Ray跟我说准备把AutoMagic自动化测试管理平台开源了!!!这是个好消息,因为AutoMagic在其所在的企业中实践应用,沉淀了自动化测试设计的基础理念的落地,对于平台很多细节我和Ray也曾反复讨论打磨。因此对于要从事自动化测试平台开发的测试人员来讲有很多值......
  • 消息中间件-RabbitMQ
    网络协议。基于TCP上面架构更高层次的功能框架。这里主要是异步,中间服务器,多个客户端角色。多对多的情形。发布--订阅模式Mqtt—messagequeueingtelemetrytransport发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)就是消息分了类型,然后指定某个类型接收队列模......
  • 异步消息的传递-回调机制
    1什么是回调软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消......
  • Android消息机制——Handler、Looper、MessageQueue
    最近在做毕设,关于android的,其中觉得android的消息机制很有意思,这里就写下自己的想法和Windows一样android也是消息驱动的。Android通过Handler和looper实现消息循环机制。一、Handler的创建每个Handler都会和一个线程和线程的messagequeue关联起来,此时你可以传递messages和runna......
  • kafka发送消息与消费消息
    kafka发送消息与消费消息packagecom.yl.kafka.producer;importorg.apache.kafka.clients.producer.Callback;importorg.apache.kafka.clients.producer.KafkaProducer;importorg.apache.kafka.clients.producer.ProducerConfig;importorg.apache.kafka.clients.produce......
  • 使用优先队列寻找中位数
    Next,SupposewewouldliketoinventanewADTcalledMedianFinderwhichisacollectionofintegersandsupportsfindingthemedianofthecollection.MedianFinderadd(x);//addsxtothecollectionofnumbersmedian();//returnsthemedianfromacol......