【RabbitMQ——再谈流控】

【前言】

最近又被流控问题缠住了,不懂其中原理的总会以界面上显示为flow来说事。那界面上连接、通道的flow状态的显示到底是怎么回事?显示为flow是否就是影响或阻塞生产者的消息发送了?本文来对此进行总结说明。

【flow状态】

要了解web界面上为什么会显示flow状态,首先得搞清楚flow状态的定义是怎样的,也就是说如何判断连接、通道当前是flow状态。

连接、通道(其实还包括队列)的flow状态主要由credit_flow算法决定(详细请戳《RabbitMQ——流控》)。

当连接或通道进程的信用值用完了,下游进程还未赋予更多的信用值时,在连接或通道的进程中,会在进程字典的credit_blocked字段里记录被下游的某个进程block,同时在进程字典的credit_blocked_at字段中记录block的时间。

如果进程字典中credit_blocked中有记录被下游block的进程,那么当前连接、通道的状态肯定是flow状态。

如果进程字典中credit_blocked中没有记录任何block的进程,则取credit_blocked_at字段中的值并与当前时间进行比较。

如果小于1秒

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值