文章目录
前言
实际场景:
之前平台项目接收器只采用了tcp来接受报文数据,最近结合了下rabbitmq,来提升平台性能,
本文主要介绍:
1.为啥要用rabbitmq,tcp的缺点。
2.rabbtimq用户实际使用过程会遇到的问题 以及如何解决
rabbitMQ的使用场景
1.同步变异步
可以使用线程池解决,但是缺点很明显:要自己实现线程池,并且强耦合 大多数是使用消息队列来解决2.低内聚高耦合:解耦----减少强依赖.
3.流量削峰—秒杀系统通过消息队列设置请求最大值,超过阀值的抛弃或者转到错误界面
4.rabbitmq采用信道通信。不采用tcp直接通信
1).tcp的创建和销毁开销大,创建3次握手,销毁4四次分手
2).高峰时成千上万条的链接会造成资源的巨大浪费,而且操作系统没秒处理tcp的数量也是有数量限制的,必定造成性能瓶颈
3).一条线程一条信道,多条线程多条信道,公用一个tcp连接。一条tcp连接可以容纳无限条信道(硬盘容量足够的话),不会造成性能瓶颈。
消息队列产生严重消息堆积怎么处理?
1. 为什么产生消息堆积?
大多是因为 Consumer 出问题了,没有及时发现,或者故障恢复需要较长的时间,导致大量消息积压在 MQ