在8月5、6、7连续三天晚上10点出现充值相关几个消息堆积的问题,经过分析发现主要问题是充值项目对mq的使用存在一些不合理的地方,当mq负载高时会出现堆积现象。
具体原因如下:
1、采用的消息模式是get模式,而不是高效的deliver模式,经过在新搭建的mq服务器测试发现,get模式:5000条/秒便会出现严重堆积, deliver模式:20000条/秒不会堆积,如果按照充值项目的写法由于存在后续的问题,每秒几百条的写入就会经常出现消息堆积;
2、消息的生产和消费共用mq链接和channel
a) 共用链接会导致:当触发mq的限流控制时,阻塞消费;
b) mq的客户端channel实现为避免消息乱窜会大量加lock,把并行变为串行,当写阻塞时,相当于也阻塞了读,相反一样。
3、不同队列共用链接和channel,会出现队列相互影响的问题。
以上问题是相关技术人员对rabbitmq不了解,采用了get模式,并且希望封装一个连接池,结果封装的有问题导致队列和消息之间相互影响,从而把一个火箭变成了一只蜗牛。
严重建议使用deliver模式。
相关推荐
采用python编写的批量删除rabbitmq的队列或交换机。 1.修改rabbitmq_delete.py中rabbitmq的配置; 2.执行以下命令: 删除队列: python3 rabbitmq_delete.py -k ‘udata.climb’ -d 1 删除交换机: python3 rabbitmq_...
使用RabbitMQ+延迟队列实现分布式事务的最终一致性方案,demo以典型的订单+库存系统为例
基于RabbitMQ消息队列的分布式事务解决方案-MQ分布式消息中间件实战.docx
rabbitMQ 死信队列 完整例子
beego环境下 rabbitmq封装以及使用
介绍Rabbitmg用于解决分布式事务必须掌握的5个核心概念一款分布式消息中间件,基于erlang语言开发,具备语言级别的高并发处理能力。和Spring框架是同一家公司。...●基于可靠消息(MQ)的解决方案异步场景
C#开发的RabbitMQ队列模式,分为生产者和消费者两个程序,使用vs2019开发的,可以运行使用,在根据自己的需求加工即可,另外在本人另外的资源还提供主题订阅模式的,已经实现了定时读取mysql数据库数据转为json发送...
使用C#封装的RabbitMQ队列,支持工作队列模式和发布订阅模式,只要在配置文件中配置RabbitMQ服务器相关信息,再在项目中引用进封装好的RabbitMQService类库,就能轻松操作RabbitMQ的工作队列模式和发布订阅模式
RabbitMQ的工作队列和路由.doc
rabbitmq-转储队列 将消息从 RabbitMQ 队列转储到文件,而不影响队列。 安装 下载一个版本 可以在页面上找到预编译的二进制包。 从源代码编译 如果您安装了 ,则可以通过运行以下命令从源代码安装 rabbitmq-dump-...
springboot+rabbitmq实现延时队列,包括消息发送和消费确认,消费者端使用策略模式处理业务
rabbitmq 延迟队列
RabbitMQ工具类实现配置文件动态创建队列和绑定
RabbitMQ 是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的...方案主要实现在统信服务器操作系统安装部署 RabbitMQ 消息队列并通过 rabbitmqadmin 来管理 MQ。 操作系统:统信服务器操作系统V20
rabbitmq下载资料,保护下载文档,包;内网安装,内网环境使用;有需要的朋友看看,对自己学习工作都很有帮助
RabbitMQ实战 高效部署分布式消息队列 RabbitMQ实战 高效部署分布式消息队列 RabbitMQ实战 高效部署分布式消息队列
基于rabbitmq实现的消息队列组件,附所有源代码,大家可以放心的使用,可用于商业程序,欢迎大家交流。
该示例通过 rabbitmq_delayed_message_exchange 插件实现自定义延时时间的延时队列。 示例是纯净的,只引入了需要的架包 启动示例时,请确保MQ已经安装了延时插件(附件里带有插件及安装说明)以及示例的MQ相关的配置...
rabbitMQ官方Demo,包含01HelloWorld,02WorkQueues,03PublishSubscribe,04Routing,05Topics,06RPC六个示例