php延迟发送消息,rabttmq php延迟消息 相关代码(网上没搜到自己琢磨着弄好了)...

本文详细介绍了运维人员如何使用RabbitMQ创建新队列和交换机,设置消息的TTL过期策略,以便实现延迟消息的转发。通过实例代码演示了如何设置交换机类型、队列属性和消息发送参数,确保消息在指定时间内自动转到备用队列。
摘要由CSDN通过智能技术生成

前言:  作为一个运维人员不背锅,谁背呢!

正文:

网上都是2种办法去实现,第二种我就不说了,要升级rabbitmq 别人也说什么什么不行

好吧~今天按照网上说的

撸代码咯:

1.首先得要创建一个新的队列 新的交换机来存放延迟消息 并且设置新的队列消息ttl到期后 转发的 交换机 和 routeing key (我的老的交换机为e_test  key 为k1)

主要代码为:

function mqInitYanChi($e_name,$q_name,$k_route,$conn)

{

//创建连接和channel

$channel = new AMQPChannel($conn);

//创建交换机对象

$ex = new AMQPExchange($channel);

$ex->setName($e_name);

$ex->setType(AMQP_EX_TYPE_DIRECT); //必须设置

$ex->setFlags(AMQP_DURABLE); //持久化 可以不必选

echo "exchange status:".$ex->declareExchange().'\n';

//绑定交换机与队列,并指定路由键

//创建队列

$q = new AMQPQueue($channel);

$q->setName($q_name);

#$q->setFlags(AMQP_DURABLE); //持久化

$q->setArgument('x-dead-letter-exchange','e_test'); //设置ttl超时转发到e_test

$q->setArgument('x-dead-letter-routing-key','k1'); //设置ttl超时转发的key为k1

echo "Message Total:".$q->declare()."\n";

echo 'Queue Bind: '.$q->bind($e_name, $k_route)."\n";

return $ex;

}

2.也就是消息发送的送时候设置ttl就行了 其实很简单

主要代码:

$message = "测试延迟!";

$ex1=mqInitYanChi('e_yanchi','q_yanchi','k1',$conn);

$attributes = array('expiration' => 5000); //设置为5秒

$ex1->publish($message,'k1','1',$attributes);

就这样 就可以发送到q_yanchi队列里边的 消息 五秒后过期  转发到 绑定了 e_test的交换机 routing-key 为k1的队列中去了

要下班了 写得有些粗糙。。有问题可以留言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值