1.异步
如:本来发邮件是同步的,但是使用RabbitMq后,可以把该耗时较长的阻塞操作交给另外一个系统或者线程执行。
替代品:Redisson当然也可以。
2.解耦
其实和异步有点关系,就是不在本系统做,让别的系统去计算,分摊压力。
3.限流
如:高并发下的抢单,为了防止单位时间内一窝蜂的请求全部过来打到数据库上,我们可以把压力转移到MQ,先暂存请求,然后一点点的消费,分摊数据库的压力。
4.死信队列功能
如:和redisson的机制一样,可以早某个操作超时之前,检测到再配合下数据库,实现:订单30min内未付款取消订单等操作。
5.rpc
在游戏中,队列术让我们可以IO多线程,逻辑单线程的写业务逻辑,找到hash,路由到固定的进程中固定的线程处理,如果这个进程位于别的机器上,那么就需要rpc通信,而rabbitmq的rpc实现非常的简单,自带reply_to属性,可以更加方便的请求后返回。