初识消息队列

一.消息队列是什么?

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

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

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

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

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

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

posted @ 2019-07-11 14:47  JINJIE124  阅读(120)  评论(0编辑  收藏  举报