前提
前两篇对rabbitmq的基本概念与延迟队列、死信队列进行了代码测试,默认都是理想情况的正常操作,针对复杂多变的网络环境,先不说投递的可靠性,首先服务的可用性就是第一个拦路虎,如:重连、限流。
本文目标:
- 单独抽离rabbitmq配置,便于之后写插件
- 考虑异常,比如:重联,<之前为了实现API,不想考虑>
- 消费端限流,为啥,因为遇到过bug…
有了前边三篇的基础,就直接上代码了
代码篇
重点
|
启动文件
import * as http from 'http'
|
消费端
async function consumer(args: {exchange, queue, routingKey, connection}, cb: (msg: any, channel: any) => void){
|
github
# 启动服务,node应该都会,要不也不会看这个 |
代码地址:https://github.com/simuty/Node_Demo
参考链接
How to reestablish connection after a failure? #153
一次 RabbitMQ 生产故障引发的服务重连限流思考
Node + MQ 限流小计
Java秒杀系统实战系列~秒杀逻辑优化之RabbitMQ接口限流二
【RabbitMQ】一文带你搞定RabbitMQ延迟队列
amqp wiki
注意:本文归作者所有,未经作者允许,不得转载