六、消息和异步

一、异步的常见形态:

  • 通知:
  • 请求异步响应:客户端发送请求到服务端,服务端异步相应请求。客户端不会阻塞,而且被设置成默认相应不会送达;
  • 消息:利用消息可以实现一对多形态的交互。客户端发布消息,可以被一个或多个感兴趣的服务项消费;客户端发布消息,等待服务发回的响应。

二、RabbitMQ的典型应用:

  • 异步处理;比如用户注册之后就要发短信和加积分,注册信息写入数据库之后让短信服务和积分服务去做相应的处理,这样就能提升用户体验;
  • 流量削峰:一般用在秒杀的场景,在应用前端加入消息队列,从而控制活动的人数,消息队列超过最大长度,应该直接抛弃用户请求。秒杀业务根据消息队列中的请求信息再做后续的处理;
  • 日志处理:典型的是kaka
  • 应用解耦:例如订单服务下单之后将商品信息写入消息队列,返回给前端下单成功或者失败的信息。商品服务通过拉或者推的方式获得下单信息,然后进行库存方面的操作。下单之后订单服务写入消息队列后就不再关心后续的操作,从而实现订单服务和商品服务的应用解耦。

三、RabbitMQ的基本使用:

  • 引入依赖:
  • 添加RabbitMQ的配置
  • 写接收方测试类:


    六、消息和异步_第1张图片
    接收方
  • 写发送方:


    六、消息和异步_第2张图片
    发送方

四、RabbitMQ消息的分组:

六、消息和异步_第3张图片
如下消息需要分组,不同的供应商负责不同的订单

六、消息和异步_第4张图片
数码供应商的接收方

六、消息和异步_第5张图片
水果供应商的接收方

六、消息和异步_第6张图片
接收方

四、商品/订单服务中使用MQ

六、消息和异步_第7张图片
商品服务扣库存之后发送消息

你可能感兴趣的:(六、消息和异步)