【workbunny/webman-rabbitmq】2.x版本怎么设置延迟发布时间

yajie

问题描述

以前用的1.x版本async_publish第三个参数可以设置延迟发布的秒速,请问2.x版本该怎么操作呢

这样设置的会报错

 async_publish(DyBuilderDelayed::instance(), 'abc',null,[
        'x-delay' => 10000,
    ]); # retu
625 2 0
2个回答

Caesar-Tang

你的第三个参数是null

  • yajie 2024-03-21

    第三个参数是$routingKey 填了不管用呀 还是会立即消费

  • Caesar-Tang 2024-03-22

    测试了,发送延时消息确实会提示“Invalid publish”

Caesar-Tang

截图
截图
需要修改process里的交换机的类型,但投递时,第一次投递失败,后面投递成功了但是不消费。

  • yajie 2024-03-22

    好滴谢谢,我试一下

  • Caesar-Tang 2024-03-22

    修改类型后,无法生成交换机和队列了,但方法还是返回了true。你可以试一下。我这边无法成功使用。

  • Caesar-Tang 2024-05-21

    有知道怎么使用了吗

  • chaz6chez 2024-05-22

    啥情况?2.x的延迟队列无法使用吗?

  • Caesar-Tang 2024-05-22

    是的 @chaz6chez

  • Caesar-Tang 2024-05-22

    github 提交 issue 了

  • chaz6chez 2024-05-22

    试试2.1.3,2.x版本我生产环境没有使用delay,所以没发现这个问题
    具体可以看https://github.com/workbunny/webman-rabbitmq/compare/2.1.2...2.1.3
    大概就是在QueueBuilder的52行,原本应该使用$this->queueConfig的,结果从1.x迁移上来的时候忘改了写成了$config,导致自动设置delay的exchangeType失效

  • chaz6chez 2024-05-22

    延迟队列的交换机具有双type,一个exchangeType和一个delay type,分别代表实际队列的交换机类型和数据本质的交换机类型,我们在class文件设置的交换机类型是设置的本质类型,其他的会在初始化时自动设置

  • Caesar-Tang 2024-05-22

    2.1.3版本可以了 @chaz6chez

  • chaz6chez 2024-05-22

    感谢你的issue反馈!

  • Caesar-Tang 2024-05-22

    给你点赞

×
🔝