一、前言说明

MQ(Message Queue 消息队列)消息中间件

MQ是一种规范理念,其中一个落地的产品ActiveMQ

1.1 消息:(微信、短信、语音...)以一种双方约定好的格式作为一种信息的载体的传输媒介,在网络上发布,然后让大家获得信息的同步和资源的交换

1.2 中间件:一定有左中右

dubbo:服务的提供者produce,服务注册中心zookeeper,服务的消费者consumer

发送者sender,receiver接收者,MQ消息中间件

二、两种讲授闲聊

1、在何种场景下使用了消息中间件?

2、为什么要在系统里引入消息中间件?

面试(说和做同样重要)

不会说有多尴尬你试试就知道了(沟通表达能力欠缺)

面试需要展示亮点(不会说、不爱说,拿的工资不高的)

原理、来龙去脉,跟面试官说一说。

三、MQ的产品学习说明

Kafka、RabbitMQ、RocketMQ、ActiveMQ

同一个理念下的不同的技术落地细节

对着一个城墙口发起冲锋

MQ宕机怎么办?-->(MQ的高可用性)集群和容错配置

银行流水需要持久化

RabbitMQ需要调用消息,不能够重复消费,只要它是消息中间件,其它的框架也应该具备,无非就是落地的实现不同而已。

四、为什么要引入MQ_上

你只会敲代码,能不能和项目经理聊上几分钟?

1、你引入MQ有什么好处?

2、引入MQ又有哪些坏处?你是如何克服和避免的?

你不会说,一个问题过来你就楞了

从生活的Case到实际生产案例

A:引入MQ之前

B:引入MQ之后

学生请教老师问题

现在讲台上是阳哥,接下来张三、王五、李四等等都要过来请教老师学习中的问题,第一个同学过来了。我们可以认为学生是一个系统,老师是一个系统,那现在就是A调用B。假如现在这位同学过来了,需要咨询我5分钟-10分钟,大家都明白,好比医生看病,没有一起看的。下一个同学过来,看有同学在问,需要排队。也许第一个同学过来,我只能响应他,后面这三个需要平白无故的等待,系统调用我的人、找我的学生有4个,假设在高并发的情况下,有400个请求,会把阳哥问垮,这时候系统负担重,耦合度比较高,直接调用是比较方便,但是耦合度高,带来的就是张三在问问题的时候,王五、李四全部等着,尤其越到后面的系统,等的时间越长,假设按照我们的这个线性模型的话,20分钟这个系统一直在等着,系统利用率极低。

比如订单系统调用一个支付接口,下订单成功,马上要付钱,A调用B系统,后面的也要调用,等的时间越来越长。

第一个同学在这里问着,5分钟。系统为了自身的健康,做进一步的限流、容灾各种的处理

这里有一个六边形,就是你们班的班长,阳哥直接跟这位兄弟做好约定,发号施令,给班长说,各位同学后面这三位烦请你们把你们的问题,按照阳哥要求的格式写在一张纸上,按照先后顺序交给班长,大家不用在这里耗着。后面的同学就可以和我脱钩了,因为上面有他们的手机,如果阳哥忙完了张三,将会从班长手上。他们几个人一看人这么多,也不来调用阳哥,也不来打扰了,高高兴兴的一进来,直接找到班长,按照我们要求的消息格式,假设就是这个,是不是就把这份消息移交给班长手上,先来后到,按照纸片压在后面。言下之意,班长就在这里接收。班长这个纸盒子(角色),后面的同学不需要直接来找阳哥,他们交完他们的提问以后,各回各家,各找各妈,不用在这里耗着,换句话说:第一种问题,我们最重要的是不是他们没有调用阳哥,阳哥收到他们的消息,解决完张三,去看。拖拉李四的,解决完以后,可以根据手机号码告诉李四,你来取吧。言下之意,后面这些没有调用阳哥,解决第一个问题(耦合调用的问题)

第二个,也许这个问题,阳哥此时此刻没有办法回答,我晚上也需要去查一下资料,你早上给我提问,我下午才能回复你,你不用像以前那样,阳哥我来找你问问题,没有回答清楚我就不走,换句话说,你早上问我,我下午给你回答,这种交互的方式,是不是异步模型

第三个,这么多人,全都来找,阳哥会累死的,现在班长,兄弟们向我开炮。很多要求和访问,没有打到阳哥身上(系统),打到班长那里了,反正班长有一个纸盒子,1000张纸是可以摆的下的,言下之意,这1000个请求,不用同时打到阳哥的系统,班长给我分担了流量,言下之意,这种调用的峰值,是不是有一部分像洪水过来,这是阳哥前面的洼地,班长桌子上的盒子(角色),就帮着阳哥挡住了一部分的流量访问,我这个系统可以专心的处理当前的主要逻辑和业务,完成了,我再从班长的纸盒子那里,拿来解决后面同学的提问,言下之意,抵御洪峰流量,达到保护主业务的目的,消峰

以前没有MQ,直接打到我,现在MQ就是班长,大家直接打到他,我们慢慢的是不是就解决了三种目的

换句话说,以前直接来找阳哥,阳哥累死了,现在兄弟们把你们的问题以一种我们约定好的消息模式发送给班长,回答我,班长是不是介于老师和同学之间的一个中间人,能不能理解上面叫消息就是我们约定的那张纸片,中间件这句话,班长是不是居中调停。OK,有班长在前面帮我挡着,兄弟们有什么事不要找我,先去找班长,把你们的问题都给班长,班长收集中以后,我再从班长那里去拿,然后我再回复给大家,是不是从同步调用变成异步调用,从直接找我到找班长,大家把火力都打向班长,我没有受到影响,降低了我的系统负担,解耦,消峰,异步

1、学生是一个系统A,老师是一个系统B。学生咨询老师5-10分钟,A系统调用B系统,其它学生等着,在高并发的情况下,会把老师问垮,耦合度高

MQ,第一位同学在问着老师,系统为了自身的健康

2、

五、为什么要引入MQ_下

1、系统之间直接调用实际工程落地和存在的问题

2、

3、

4、

六、MQ的作用定义

面向消息的中间件(message-oriented middleware)MOM能够很好的解决以上问题。是指利用高效可靠的消息传递机制与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递消息排队模型在分布式环境下提供应用解耦,弹性伸缩,冗余存储、流量削峰,异步通信,数据同步等功能。

大致的过程是这样的:发送者把消息发送给消息服务器,消息服务器将消息存放在若干队列(发短信)/主题(微信公众号)topic中,在合适的时候,消息服务器回将消息转发给接受者。在这个过程中,发送和接收是异步的,也就是发送无需等待,而且发送者和接受者的生命周期也没有必然的关系;尤其在发布pub/订阅sub模式下,也可以完成一对多的通信,即让一个消息有多个接受者。

特点:

1、采用异步处理模式

===

2、应用系统之间解耦合

发送者和接受者不必了解对方,只需要确认消息

发送者和接受者不必同时在线

七、ActiveMQ官网介绍和下载

怎么玩------------   ActiveMQ

最主要的功能---实现高可用、高性能、可伸缩、易用和安全的企业级面向消息服务的系统

异步消息的消息和处理

控制消息的消费顺序

可以和spring/SpringBoot整合简化编码

配置集群容错的MQ集群

八、ActiveMQ在Linux下安装

带日志的启动  ./activemq start > /opt/apache-activemq-5.16.2/activemq.log

关闭: ./activemq stop 

http://192.168.142.128:8161  访问路径

ps -ef|grep activemq|grep -v grep 查看是否运行成功

activemq的默认进程端口是61616

netstat -anp|grep 61616

lsof -i:61616 查看端口被谁占用

3189是进程编号

root       3189      1  8 07:34 pts/0    00:00:01 /opt/jdk1.8.0_281/bin/java -Xms64M -Xmx1G -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=/opt/apache-activemq-5.16.2//conf/login.config -Dcom.sun.management.jmxremote -Djava.awt.headless=true -Djava.io.tmpdir=/opt/apache-activemq-5.16.2//tmp -Dactivemq.classpath=/opt/apache-activemq-5.16.2//conf:/opt/apache-activemq-5.16.2//../lib/: -Dactivemq.home=/opt/apache-activemq-5.16.2/ -Dactivemq.base=/opt/apache-activemq-5.16.2/ -Dactivemq.conf=/opt/apache-activemq-5.16.2//conf -Dactivemq.data=/opt/apache-activemq-5.16.2//data -jar /opt/apache-activemq-5.16.2//bin/activemq.jar start

九、ActiveMQ安装后的控制台访问

后台服务已经启动,前台看不到啊????

activemq 前台有图形化界面吗?

win是客户端,Linux是我们的mq服务器,需要互访通过

http://192.168.142.128:8161/

十、Java编码 MQ标准 API 讲解

我们怎么来编写标准的消息的推送发送的Java编程到MQ,然后消费的怎么拉取,获得消费的这些消息呢?

十七、Java编码Topic讲解

在点对点的消息传递域中,目的地被称为队列(queue)

在发布订阅消息传递域中,目的地被称为主题(topic)

发布主题生产者

订阅主题消费者

先启动订阅再启动生产,不然发送的消息是废消息

ActiveMQ学习笔记01Q相关推荐

  1. ActiveMQ学习笔记07 - 优缺点

    2019独角兽企业重金招聘Python工程师标准>>> 优点: 可以用JDBC 虽然使用JDBC会降低ActiveMQ的性能,但是数据库一直都是开发人员最熟悉的存储介质.将消息存到数 ...

  2. ActiveMQ学习笔记(8)——导入ActiveMQ源码到Eclipse

    2019独角兽企业重金招聘Python工程师标准>>> 一.准备 Eclipse Luna 版本,本身已经支持Git和Maven. 安装了apache-maven,我使用的是3.1. ...

  3. ActiveMQ学习笔记03 - 消息持久化

    2019独角兽企业重金招聘Python工程师标准>>> ActiveMQ的消息持久化机制有JDBC,AMQ,KahaDB和LevelDB,还有一种内存存储的方式,由于内存不属于持久化 ...

  4. ActiveMQ学习笔记(二) JMS与Spring

    上文可见,JMS Native API使用起来不是特别方便.好在Spring提供了很好的JMS支持. (一)配置ConnectionFactory  如果使用连接池的话,不要忘记activemq-po ...

  5. ActiveMQ学习笔记(21)----ActiveMQ集成Tomcat

    1. 监控和管理Broker Web Console 方式:直接访问ActiveMQ的管理页面:http://localhost:8161/admin,默认的用户名和密码是admin/admin.具体 ...

  6. 消息中间件ActiveMQ学习笔记(一):安装

    这里只有linux系统的安装. 一:下载 http://activemq.apache.org/components/classic/download/apache-activemq-5.15.10- ...

  7. ActiveMQ学习笔记

    目录 1. Active简介 2. Active安装以及问题总结 安装 问题总结 3. Active基本使用 传输文本信息 传输对象消息 实现队列服务监听处理消息 使用Topic模型 SpringBo ...

  8. ActiveMQ学习笔记(2)——JMS消息模型

    2019独角兽企业重金招聘Python工程师标准>>> 1.1 JMS模型简介 JMS支持两种消息通信模型: 点对点模型(Point to Point,P2P) 发布者/订阅者模型( ...

  9. ActiveMQ学习笔记(二十三)Comsumer高级特性2

    一.Message Selectors 二.Redelivery Policy 测试: 重传次数,默认为6. 用最简单的QueueSender和QueueReceiver进行测试,QueueRecei ...

最新文章

  1. oss客户端工具_阿里云服务器ECS上使用ossfs工具挂载阿里云OSS存储
  2. 信息系统项目管理知识--项目范围管理
  3. 浮点与定点的二进制存储
  4. emacs常用命令:移动光标
  5. python xlrd模块_python之xlrd模块
  6. 鸿蒙手机播放音乐-第一集
  7. bootstrop 日期控件 datepicker被弹出框dialog覆盖的解决办法
  8. 推荐一个Silverlight多文件(大文件)上传的开源项目(转载)
  9. matlab读取trmm,基于Matlab的TRMM3B43数据处理的思维过程与技术流程
  10. 架构之路(五):忘记数据库
  11. Atitit.现实生活中最好使用的排序方法-----ati排序法总结
  12. JAVA日期格式化大写YYYY-MM-dd和小写yyyy-MM-DD的坑
  13. ResNet网络结构详解、完整代码实现
  14. 统一社会信用代码规则
  15. Photoshop: 将图片转换成psd格式
  16. 手机端怎么把PDF格式文件转换成图片
  17. Praat将连续录制的声音文件切成小单位文件
  18. React实现(Web端)网易云音乐项目(一),错过了真的可惜呀
  19. 7-7 斐波那契(Fibonacci)数列前20项 (10 分)
  20. [导入]一些博客聚合和书签网址

热门文章

  1. Python 常用(聚类/分类)数据预处理方法
  2. eclipse如何点击png或者jpg格式图片看到的是乱码的解决办法
  3. 微信小程序 php 健身教练私教预约系统
  4. redis存储新闻列表_每日一面 - Redis程序设计中,上百万的新闻,如何实时展示最热点的top10条呢...
  5. IT项目管理-使用Microsoft Project来进行IT项目管理
  6. Java使用中国网建发送短信验证码
  7. java android消息推送_Android中使用socket通信实现消息推送的方法详解
  8. Android推送机制的实现原理
  9. Python散点图拟合
  10. python----读大文件