Java ActiveMQ:(二)消息服务的应用场景

  • 消息队列的主要特点是异步处理,主要目的是减少请求响应时间和解耦。所以主要的使用场景就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列。同时由于使用了消息队列,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦和。
    Java ActiveMQ:(二)消息服务的应用场景

1.异步处理

1.1 用户注册

用户注册流程:

  • 注册处理以及写数据库
  • 发送注册成功的手机短信
  • 发送注册成功的邮件信息

  • 如果用消息中间件:则可以创建两个线程来做这些事情,直接发送消息给消息中间件,然后让邮件服务和短信服务自己去消息中间件里面去取消息,然后取到消息后再自己做对应的业务操作。就是这么方便

2.应用的解耦

2.1 订单处理

生成订单流程:

  • 在购物车中点击结算
  • 完成支付
  • 创建订单
  • 调用库存系统

  • 订单完成后,订单系统并不去直接调用库存系统,而是发送消息到消息中间件,写入一个订单信息。库存系统自己去消息中间件上去获取,然后做发货处理,并更新库存,这样能够实现互联网型应用追求的快这一个属性。而库存系统读取订单后库存应用这个操作也是非常快的,所以有消息中间件对解耦来说也是一个不错的方向

3.流量的削峰

3.1 秒杀功能

秒杀流程:

  • 用户点击秒杀
  • 发送请求到秒杀应用
  • 在请求秒杀应用之前将请求放入到消息队列
  • 秒杀应用从消息队列中获取请求并处理

  • 比如,系统举行秒杀活动,热门商品。流量蜂拥而至 100 件商品,10 万人挤进来怎么办?10 万秒杀的操作,放入消息队列。秒杀应用处理消息队列中的 10 万个请求中的前 100 个,其他的打回,通知失败。流量峰值控制在消息队列处,秒杀应用不会瞬间被怼死.