java activemq_Java学习之——ActiveMQ

一、 ActiveMQ 简介

1 什么是 ActiveMQ

ActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个

完全支持 JMS1.1 和 J2EE 1.4 规范的 JMS Provider 实现,尽管 JMS 规范出台已经是很久

的事情了,但是 JMS 在当今的 J2EE 应用中间仍然扮演着特殊的地位。

2 什么是消息

“消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;

也可以更复杂,可能包含嵌入对象。

3 什么是队列

数据结构中的队列,先进先出

4 什么是消息队列

“消息队列”是在消息的传输过程中保存消息的容器。

5 常用消息服务应用

5.1 ActiveMQ

ActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完

全支持 JMS1.1 和 J2EE 1.4 规范的 JMS Provider 实现。

5.2 RabbitMQ

RabbitMQ 是一个在 AMQP 基础上完成的,可复用的企业消息系统。他遵循 Mozilla Public License 开源协议。开发语言为 Erlang。

5.3 RocketMQ

RocketMQ是阿里开源的消息中间件,它是纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。RocketMQ思路起源于Kafka,但并不是Kafka的一个Copy,它对消息的可靠传输及事务性做了优化,目前在阿里集团被广泛应用于交易、充值、流计算、消息推送、日志流式处理、binglog分发等场景。

5.4 Kafka

Kafka是LinkedIn开源的分布式发布-订阅消息系统,目前归属于Apache顶级项目。Kafka主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输。0.8版本开始支持复制,不支持事务,对消息的重复、丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务。

二、 消息服务的应用场景

消息队列的主要特点是异步处理,主要目的是减少请求响应时间和解耦。所以主要的使

用场景就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列。同

时由于使用了消息队列,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,

也不需要受对方的影响,即解耦和。

异步处理

例如用户注册:

传统流程:

1)注册处理以及写数据库

2)发送注册成功的手机短信

3)发送注册成功的邮件信息

如果用消息中间件:则可以创建两个线程来做这些事情,直接发送消息给消息中间件,

然后让邮件服务和短信服务自己去消息中间件里面去取消息,然后取到消息后再自己做对应

的业务操作。

应用的解耦

例如订单处理

生成订单流程:

1)在购物车中点击结算

2)完成支付

3)创建订单

4)调用库存系统

订单完成后,订单系统并不去直接调用库存系统,而是发送消息到消息中间件,写入一

个订单信息。库存系统自己去消息中间件上去获取,然后做发货处理,并更新库存,这样能

够实现互联网型应用追求的快这一个属性。而库存系统读取订单后库存应用这个操作也是非

常快的,所以有消息中间件对解耦来说也是一个不错的方向。

流量的削峰

秒杀功能

秒杀流程:

1)用户点击秒杀

2)发送请求到秒杀应用

3)在请求秒杀应用之前将请求放入到消息队列

4)秒杀应用从消息队列中获取请求并处理。

比如,系统举行秒杀活动,热门商品。流量蜂拥而至 100 件商品,10 万人挤进来怎么

办?10 万秒杀的操作,放入消息队列。秒杀应用处理消息队列中的 10 万个请求中的前 100

个,其他的打回,通知失败。流量峰值控制在消息队列处,秒杀应用不会瞬间被怼死。

三、 JMS((Java Messaging Service)

1 什么是 JMS

JMS(Java Messaging Service)是 Java 平台上有关面向消息中间件的技术规范,它便于

消息系统中的 Java 应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接

口,简化企业应用的开发。

2 JMS 模型

2.1点对点模型(Point To Point)

生产者发送一条消息到 queue,只有一个消费者能收到。

2.2发布订阅模型(Publish/Subscribe)

发布者发送到 topic 的消息,只有订阅了 topic 的订阅者才会收到消息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值