关于workerman/redis-queue

1619443919

workerman/redis-queue
很开心啊 终于workerman自己搞了个队列了
先订阅队列,一旦send到该队列后,是实时触发么?
翻了下代码如下
if ($this->_subscribeQueues) {
$this->_redisSubscribe->brPoping = 1;
Timer::add(0.000001, [$this->_redisSubscribe, 'brPop'], [\array_keys($this->_subscribeQueues), 1, $cb] ,false);
}
如果是实时触发 如果我想延迟处理呢?
send可以带delay秒数 文档里显示仅可以控制在1秒,2秒,3秒?难道不可以0.05秒?0.1秒?
场景:我不想让队列实时消费,我想控制消费频率,如每0.1秒后消费一次

3906 2 0
2个回答

walkor

延迟队列最小单位为1秒,不支持毫秒

  • 暂无评论
1619443919
if ($this->_subscribeQueues) {
$this->_redisSubscribe->brPoping = 1;
Timer::add(1, [$this->_redisSubscribe, 'brPop'], [\array_keys($this->_subscribeQueues), 1, $cb] ,false);
}

老大,我把redis队列的client.php内的pull方法内的定时器改成1秒,能实现消费是[进程数*1个/秒],这样改会有其他不良后果么?因为这样好像就能控制每秒的消费频率了哈?

  • walkor 2021-02-16

    不良后果就是消费有延迟,没有其它后果

  • 1619443919 2021-02-22

    @1:
    redis支持这个pSubscribe
    redis队列不支持pSubscribe订阅么?
    pSubscribe
    订阅一个或多个符合给定模式的频道
    redis队列要怎么来支持这样订阅一个模式的频道?

  • 1619443919 2021-02-22

    我们目前有这样的需求队列名queue是不固定的频道例如:queue-1,queue-2...........,难道在onworkerstart里订阅这些不确定数量的频道来实现这些队列消费么?

  • dagongxia 2021-05-14

    @1619443919:请问这问题解决了没 刚好也遇到这问题了

年代过于久远,无法发表回答
🔝