Hyperf中RabbitMQ的使用

1.简单的使用可以参照官方文档的AMQP组件:https://hyperf.wiki/2.1/#/zh-cn/amqp

2.安装过程参照:https://www.linuxprobe.com/install-rabbitmq-on-centos-7.html

为了防止博客博主关闭博客,写下简要安装步骤

先安装erlang语言,再安装RabbitMQ

到:https://bintray.com/rabbitmq/rpm/erlang安装erlang

到:https://www.rabbitmq.com/install-rpm.html#downloads下载rpm文件

rpm -Uvh erlang-23.2.4-1.el7.x86_64.rpm

yum install erlang

yum install rabbitmq-server-3.8.12-1.el7.noarch.rpm

3.启动rabbitmq:

systemctl start rabbitmq-server
systemctl enable rabbitmq-server
systemctl status rabbitmq-server
rabbitmq-plugins enable rabbitmq_management
chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/
rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin “.*” “.*” “.*”

可以到 http://localhost:15672/ 访问rabbitMQ页面

重置rabbitMQ:

rabbitmqctl  stop_app
rabbitmqctl  reset
rabbitmqctl  start_app
rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin “.*” “.*” “.*”

4.接下来才是我们业务所需的代码,因为想实现延时队列,这里需要用到ttl+死信的原理,但是目前先开启配置以后,再注释配置,再换个队列名字就能生效。

原理应该是每次创建死信队列的时候需要先判断有没有这些配置,没有的话配置好以后下次不再重复配置,这样是可以生效的。

明天再试试,搞清楚再来更新。

先贴上死信消费的代码:

declare(strict_types=1);

namespace AppAmqpConsumer;

use HyperfAmqpResult;
use HyperfAmqpAnnotationConsumer;
use HyperfAmqpMessageConsumerMessage;
use PhpAmqpLibMessageAMQPMessage;
use HyperfAmqpBuilderQueueBuilder;

/**
 * @Consumer(exchange="dlx", routingKey="dlx", queue="dlx2", name ="DlxConsumer", nums=1)
 */
class DlxConsumer extends ConsumerMessage
{
    public function consumeMessage($data, AMQPMessage $message): string
    {
        var_dump("DLX",date('Y-m-d H:i:s'),$data);
        return Result::NACK;
    }

    public function getQueueBuilder(): QueueBuilder
    {
        
        $result =  (new QueueBuilder())->setQueue($this->getQueue())
            ->setArguments([
                'x-message-ttl' => ['I', 10 * 1000],
                'x-dead-letter-exchange' => ['S', 'hyperf'],
                'x-dead-letter-routing-key' => ['S', 'hyperf'],
            ]);
            // var_dump("DLX",date('Y-m-d H:i:s'));
            return $result;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值