php rabbitmq 手册,rabbitmq

**RABBITMQ**

1、交换机

~~~

// @param1:名称

// @param2:类型,默认:direct

// @param3:是否创建为延迟交换机,默认:FALSE

// @param4:当交换机不存在时不自动创建,默认:FALSE

// @param5:持久化,默认:TRUE

// @param6:连接断开后自动删除交换机,默认:FALSE

$Rmq = \api\Rmq::exchange('exchange');

// 以上参数一般情况下默认即可

~~~

2、队列

~~~

// @param1:名称

// @param2:当队列不存在时不自动创建,默认:FALSE

// @param3:持久化,默认:TRUE

// @param4:队列允许其他通道消费,默认:FALSE

// @param5:队列执行完毕后自动删除,默认:FALSE

\api\Rmq::queue('queue');

// 以上参数一般情况下默认即可

~~~

3、将队列绑定到交换机

~~~

// @param1:路由,默认:空

\api\Rmq::bind();

~~~

4、添加队列

~~~

// @param1:写入的内容,字符串或者数组格式

// @param2:是否批量写入,默认:FALSE

// @param3:延迟写入,默认:FALSE

$Rmq->add([

'txt' => 'content'

]);

// 如果第二个参数是FALSE(不是批量写入的情况下),到此就已经将数据写入到队列

~~~

5、执行批量写入队列

~~~

for ($i = 1; $i < 1001; $i++)

$Rmq->add([

'txt' => $i

], TRUE);

// 批量写入

$Rmq->publish();

~~~

6、消费队列

~~~

// @param1:消费回调,在此处理自己的业务,默认会传递一个$msg参数,里面包含该条队列的详细信息

// @param2:自动应答,默认:FALSE

// @param3:标签,默认:''

$Rmq->consume(function($msg){

// 手动应答,告诉rabbitmq已经处理了该条队列

// 如果第二个参数为TRUE,则此行代码可以不写

// 手工应答的可靠度更高一些

\api\Rmq::ack($msg);

echo $msg->body;

});

~~~

7、读取单条队列

~~~

$msg = $Rmq->get();

~~~

---

**完整示例**

1、普通队列写入

~~~

$Rmq = \api\Rmq::exchange('demo')

->queue('demo_queue')

->bind();

$Rmq->add([

'txt' => 'content'

]);

// 简化写法

rmq('demo', 'demo_queue')->add([

'txt' => 'content'

]);

// 在项目配置文件 Rmq.php中可以配置默认的 交换机和队列,采用默认配置可以使用一下写法

rmq()->add([

'txt' => 'content'

]);

~~~

2、批量写入队列

~~~

$Rmq = \api\Rmq::exchange('demo')

->queue('demo_queue')

->bind();

$Rmq->add([

'txt' => 'content'

], TRUE);

$Rmq->publish();

// 简化写法

$rmq = rmq();

$rmq->add([

'txt' => 'content'

], TRUE);

$rmq->publish();

~~~

3、延迟写入队列

>延迟队列使用场景:

>

>新用户使用1天这种功能,可以在开通后写入一个延迟1天的队列,1天后消费端消费到这条队列,把该用户的授权信息删除

~~~

$Rmq = \api\Rmq::exchange(

'delayed',

'direct',

TRUE

)->queue('demo_queue')->bind();

// 延迟半小时写入队列

$Rmq->add([

'txt' => 'content'

], FALSE, 3600);

~~~

4、普通消费

~~~

$Rmq = \api\Rmq::exchange('demo')->queue('demo_queue')->bind();

$Rmq->consume(function($msg){

// 手工应答

\api\Rmq::ack($msg);

$data = $message->body;

$data = json_decode($data, TRUE);

// 下面处理自己的业务逻辑

......

});

~~~

5、消费后自动应答

~~~

$Rmq = \api\Rmq::exchange('demo')->queue('demo_queue')->bind();

$Rmq->consume(function($msg){

$data = $message->body;

$data = json_decode($data, TRUE);

// 下面处理自己的业务逻辑

......

}, TRUE);

~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值