• 初识消息队列


    一.消息队列是什么?

    消息:在不同的应用服务中间传输的数据

    队列:一种先进先出的数据结构

    消息队列:一个存放消息的容器;一种中间件;

    二.为什么要使用消息队列?使用消息队列能给我们带来什么?

    1.异步处理

    1.1 提高系统性能和响应速度

    相较于传统的串行和并行,异步处理提高了系统的响应速度,减少响应时间

    1.2 流量削峰,限流

    常见于秒杀活动中,当一下子产生大量请求数据时,先放在消息队列中作为缓冲,避免直接将请求推送到服务端,使得服务端崩溃。并且当消息队列中的数据达到一定值时,不再接收新的请求和数据,直接返回请求失败的结果

    2.应用解耦

    避免了应用之间的直接调用,去除硬编码,降低耦合性

    三.使用消息队列带来的问题

    消息队列挂掉怎么办?

    数据丢失或者没有被正确消费怎么办?

    数据重复消费怎么办?

    四.消息队列的一些基本概念

    1.JMS

    Java Message Service,Java定义的一系列关于面向消息中间件(MOM)的API规范

    2.JMS标准的两种模式

    2.1 P2P模式,即点对点

    分为三个角色:生产者,消息队列,消费者

    过程:生产者将生产的消息放进消息队列,消费者从队列中取出消息消费,消费者向消息队列发送确认信息,消息队列删除该消息

    特点:每条消息只能被一个消费者消费;一旦某条消息被消费者取走并返还消费确认信息,该消息就会被队列删除;未被消费的消息在队列中保留直至被消费或者超时

    2.2 发布订阅模式 pub/sub

    分为三个角色:发布者,主题(topic),订阅者

    过程:订阅者订阅某个topic,发布者将消息发布至该topic,订阅者获取该topic下的消息

    特点:每个消息可以被多个消费者消费;时间上的前后依赖,必须先订阅才能消费;持久订阅和非持久订阅,

    3.消费消息的两种方式

    3.1 push

    当有新消息时,消息队列“主动告知”消费者,消费者才去消费

    3.2 pull

    消费者不断去轮询消息队列,如果有就消费

  • 相关阅读:
    [翻译]Webpack解惑
    Vue.js与angular在数据实现的思考
    多线程入门-第三章-线程的调度与控制之优先级
    多线程入门-第二章-线程的生命周期
    多线程入门-第一章-线程的创建与启动
    多线程入门-概述
    IO流入门-第十三章-File相关
    IO流入门-第十二章-ObjectInputStream_ObjectOutputStream
    IO流入门-第十一章-PrintStream_PrintWriter
    IO流入门-第十章-DataInputStream_DataOutputStream
  • 原文地址:https://www.cnblogs.com/JINJAY/p/11169933.html
Copyright © 2020-2023  润新知