其实最初接触到消息的机制是在项目中,是个消息队列的概念,比如我给用户发券的时候也要给用户发送短信给手机推送消息,同步发送的话量大,耗时,不现实,而且我半夜发券,也不能半夜给用户发消息,所以我把信息先推到消息队列中(当时用的阿里云的),合适的时间再开始做这件事情。

所以消息队列给我的印象是存储,异步,通信。

下面我们来正式说。

一:什么是消息队列?消息中间件?

消息队列:用于两边传送信息的队列。消息中间件是采用消息传送机制/消息队列的中间件技术,进行数据交流,用在分布式系统的集成。

二:消息中间件的使用场景

    1.异步处理,如文章开始。

    2.应用解偶,比如用户下个订单要减库存,可以采用消息队列来接偶,

    3.流量的削锋,这个我面试的时候被问到秒杀场景,其实秒杀可以用消息中间件,还可以解决库存减值问题

    4.日志处理,可以将错误日志和用户行为日志通过消息队列做存储,这个主要是Kafka实现。

三:有哪几种消息队列?消息队列有什么特点?

1:比如,activeMQ,RabbitMQ,Kafka。

kafkaRabbitMQ的比较

1  RabbitMqkafka成熟,在可用性上,稳定性上,可靠性上,RabbitMq超过kafka

2  Kafka设计的初衷就是处理日志的,可以看做是一个日志系统,针对性很强,所以它并没有具备一个成熟MQ应该具备的特性

3  Kafka的性能(吞吐量、tps)比RabbitMq要强


特点:

消息模式:生产者,消费者

               主题订阅

                请求响应

多语言:不一定是java实现,也会支持多语言。

会有吞吐量限制,消息会丢失,会重复,支持持久化,事务,负载均衡

JMS,ActiveMQ 之消息中间件

四:JMS,activeMQ?Spring?

JMS我理解为Java提供的实现应用程序间消息传递交换的一套标准规范接口(注意,只是接口),activeMQ是基于JMS的一个实现,Spring中有提供对activeMQ的整合。

JMS:

1)连接工厂:创建一个JMs连接


2JMS连接:客户端和服务器之间的一个连接。由工厂产生。


3JMS会话:客户和服务器会话的状态,建立在连接之上的,由连接产生。


4JMS目的:消息队列,由会话产生。


5JMS生产者:消息的生成,由会话产生。


6JMS消费者:接收消息,由会话产生。


7Broker:消息中间件的实例(ActiveMq),消息队列核心,相当于一个控制中心,负责路由消息、保存订阅和连接、消息确认和控制事务.


后续





    

相关文章:

  • 2021-06-05
  • 2021-09-15
  • 2022-02-07
  • 2022-01-19
  • 2021-07-16
猜你喜欢
  • 2021-08-24
  • 2021-09-17
  • 2021-05-29
  • 2021-11-22
  • 2022-12-23
  • 2021-05-11
  • 2021-09-04
相关资源
相似解决方案