一.简介
Apache ActiveMQ 是一种开源分布式消息中间件,Apache出品,实现Jms规范
官网:http://activemq.apache.org/
二.什么是JMS?
定义了俩个应用程序或者分布式系统发送消息的API,与具体实现平台无关,即JAVA_MESSAGE_SERVICE,还定义了一系列相关术语。
JMS的俩种消息模型
1)点对点Point-to-point,
1.即一条消息对应一个生产者和一个消费者,每个消息只能有一个消费者,即每个消息只能被其中一个消费者消费
2.消费的生产者和消费者之间没有时间上的相关性,无论消费者在生产者发送消息时是否处于运行状态,它都可以提取信息
(解释:中间的就是队列,client1就是生产者,它向队列中发送消息,client2是消费者,它负责从队列中提起消息,消息完成后,队列中的消息也就消失了)
2)发布订阅Publish/Subscribe
1.每个消息可以被多个消费者消费,前提是这些消息已经对topic(主题进行了订阅)
2.消费者和消息这之间有时间上的相关性,订阅了该主题的的消费者只能消费改主题发布的消息,如果此时该消费者没有设置消息持久化,且没有在线,而主题已经完成了消息发布,那么该消息这不会收到那主题发布的消息。
(解释:topic为主题,client 1为生产者,它负责向主题发布消息,client 2和client 3均为订阅了该主题的消费者,但client 1发送消息,且client 2和3都在线,那么将可以收到消息)
三.什么是消息队列?
消息队列,一般我们将其简称为MQ (Message Queue),消息队列可以可以简单理解为:把要传输的数据放到队列中。
关于消息队列一篇讲解的比较好的文章:
https://blog.csdn.net/Stream_who/article/details/88184879
原文:https://blog.csdn.net/yue_2018/article/details/89305275
四.ActiveMQ 的几种使用场景
1.异步调用 2.一对多通信
3.做多个系统的集成,同构,异构等
于我自己理解来说: 用途就是用来处理消息,也就是处理JMS的,消息队列在大型点子商务网站,如京东,淘宝等网站有着深入的应用,队列的主要作用是消除高并发访问高峰,加快网站的响应速度。
举个小例子: 在购物时,不直接给用户提示订单提交成功,而是提示“您提交了订单,请等待系统确认”,再由消息队列的消费者·1进程从消息队列中获取数据,异步写入数据库。
五.一些比较好的原创文章
有小例子,通俗易懂 https://blog.csdn.net/sihai12345/article/details/99860157