java消息队列ActiveMQ

安装

前置条件

  • activemq的运行依赖于jdk,需要提前安装jdk
  • 如果已经安装了jdk,需要根据jdk的版本来选择对应的版本进行安装activemq
  • 版本对应在官网上,使用java -version 看jdk的版本
  • 注意:jdk和mq的版本不一致会报错,电脑的命名不能用中文

启动

  • 有的版本bin目录会有2个目录win32和win64,有的只有win64
  • 打开bin目录
  • 点击activemq.bat,访问网址 http://127.0.0.1:8161/admin/

使用服务进行启动

  • 上述方式使用bat文件启动,只要cmd窗口一关,就会关闭
  • 自带安装服务和卸载服务的bat文件(使用管理员权限运行)

消息中间件的应用场景

  • 异步处理
  • 应用解耦
  • 流量削峰

场景

用户注册需要三个功能:写数据库、发送邮件、注册短信

异步处理

串行

并行

消息中间件

对比

应用解耦

流量削峰

中间件对比

  • activemq:java、万级吞吐量、毫秒级响应速度、可用性高(主从架构),很多公司在用
  • rabbitmq:erlang,其他同上,管理界面丰富
  • rocketmq:java,10万级别,可用性很高(分布式)
  • kafka:消息查询和追溯没有提供,大数据应用广泛

jms消息模型

  • 两种模型
  • P2P(point to point):点对点模型(queue模型)
  • P/S(publish/subscribe):发布订阅模型(topic模型)

点对点

生产者消费者之间的消息往来

特点

  • 每个消息只能被一个消费者消费,消费之后就直接消失了
  • 生产者和消费者没有直接依赖关系,不管消费者有没有运行,都不妨碍生产者将消息发给队列
  • 消费者成功接受消息之后需要向队列回应应答成功

发布订阅模型

三个角色

  • 发布者
  • 订阅者
  • 主题
  • 发布者将消息发布到主题,只有订阅了主题的订阅者才能接收到消息
  • topic来实现消息的发布
  • 当一个消息被发布,n个订阅者都可以得到消息的拷贝

特点

  • 一个主题可以被多个订阅者订阅
  • 存在时间的先后顺序,消费者需要先订阅,生产者才能发布消息
  • 订阅者必须保持持续运行状态,才能接收到生产者的消息

JMS API

相关推荐
皮皮林5517 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河7 小时前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
桦说编程10 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读
躺平大鹅12 小时前
Java面向对象入门(类与对象,新手秒懂)
java
初次攀爬者13 小时前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺13 小时前
搞懂@Autowired 与@Resuorce
java·spring boot·后端
Derek_Smart14 小时前
从一次 OOM 事故说起:打造生产级的 JVM 健康检查组件
java·jvm·spring boot
NE_STOP15 小时前
MyBatis-mybatis入门与增删改查
java
孟陬18 小时前
国外技术周刊 #1:Paul Graham 重新分享最受欢迎的文章《创作者的品味》、本周被划线最多 YouTube《如何在 19 分钟内学会 AI》、为何我不
java·前端·后端