首页 > 作文

互联网常识:rabbitmq常见功能封装(php版本)

更新时间:2023-02-26 16:55:42 阅读: 评论:0

导读跟大家讲解下有关rabbitmq常见功能封装(php版本),相信小伙伴们对这个话题应该也很关注吧,现在就为小伙伴们说说rabbitmq常见功能封

跟大家讲解下有关rabbitmq常见功能封装(php版本),相信小伙伴们对这个话题应该也很关注吧,现在就为小伙伴们说什么是跨文化交际说rabbitmq常见功能封装(php版本),小编也收集到了有关rabbitmq常见功能封装(php版本)的相关资料,希望大家看到了会喜欢。

本篇文章给大家介绍rabbitmq常见功能封装(php版本)有一定的参考价值需要的朋友可以参考一下希望对大家有所帮助。

在项目中rabbitmq得到了广泛的时候这里对rabbitmq的常规功能做了一个简单的总结并封装成了compor包compor包地址(https://packagist.org/packages/maweibinguo/easyrabbitmq)、github地址(https://github.com/maweibinguo/easyrabbitmq)欢迎fork由于水平有限难免存在bug欢迎提出宝贵意见

【推荐学习:PHP视频教程】

easy-rabbitmq 包简介

对php-amqplib/php-amqplib包的二次封装为常见功能提供一套开箱即用的生产解决方案。目前支持的功能列表如下:

推送消息到直连交换机(含延迟消息)推送消息到扇形交换机(含延迟消息)推送消息到主题交换机(含延迟消息)订阅模式下的可靠消费, 消费者消费失败后将会尝试继续消费最多尝试5次。拉取模式下的可靠消费, 消费者消费失败后将会尝试继续消费最多尝试5次。

如果还有其它场景欢迎继续补充随后进行迭代!!

要求安装包对PHP版本对要求主要取决于php-amqplib/php-amqplib包本身对要求,这里为了兼顾php5.0的使用者,我们使用了php-amqplib/php-amqplib包V2.9.0的版本。具体的要求参照这里(/d/file/titlepic/php-amqplib 这个开发包也是在7.0这个版本上面开发完成的!安装

 compor require maweibinguo/easyrabbitmq

使用

在这里我们推荐php脚本+supervisor结合使用用以保证消费进程的可靠性、增强worker的消费能力! 如果你还没有听说过supervisor可以点击这里(http://www.supervisord.org/introduction.html)了解.

1、推送消息1-1、推送消息到直连交换机

 $config = [ "host" => "127.0.0.1", "port" => "5672", "ur" => "guest", "password" => "guest", "vhost" => "/", "channel_max_num" => 10, ]; $instance = RabbitMq::getInstance($config); //延迟消息,30 秒中后才会到达指定的交换机 $instance->pushToDirect( $msg = time, //消息体内容 $exchange = "easy_direct_exchange", //交换机名称 $routingKey = "direct_test_queue", //消息的routingKeyconsume(get) 方法到bingdingKey 要和routingKey保持一致 $delaySec = 30 //延迟秒数 ); //无延迟推入到指定到直链交换机 $instance->pushToDirect( $msg = time, //消息体内容 $exchange = "easy_direct_exchange", //交换机名称 $routingKey = "direct_test_queue", //消息的routingKeyconsume(get) 方法到bingdingKey 要和routingKey保持一致 );

1-2、推送消息到扇形交换机

 $config = [ "host" => "127.0.0.1", "port" => "5672", "ur" => "guest", "password" => "guest", "vhost" => "/", "channel_max_num" => 10, ]; $instance = RabbitMq::getInstance($config); //延迟消息,30 秒中后才会到达指定的交换机 $instance->pushToFanout( $msg = time, //消息体内容 $e上课走神的原因xchange = "easy_fanout_exchange", //交换机名称 $delaySec = 30 //延迟秒数 ); //无延迟推入到教育实践活动总结指定到直链交换机 $instance->pushToFanout( $msg = time, //消息体内容 $exchange = "easy_fanout_exchange" //交换机名称 );

1-3、推送消息到主题交换机

 $config = [ "host" => "127.0.0.1", "port" => "5672", "ur" => "guest", "password" => "guest", "vhost" => "/", "channel_max_num" => 10, ]; $instance = RabbitMq::getInstance($config); //延迟消息,30 急性肠炎吃什么药秒中后才会到达指定的交换机 $instance->pushToTopic( $msg = time, //消息体内容 $exchange = "easy_topic_exchange", //交换机名称 /** * routingKey 要同consum(get)方法的bindingKey相匹配 * bindingKey支持两种特殊的字符"*"、“#”用作模糊匹配, 其中"*"用于匹配一个单词、“#”用于匹配多个单词(也可以是0个) * 无论是bindingKey还是routingKey, 被"."分隔开的每一段独立的字符串就是一个单词, easy.topic.queue, 包含三个单词easy、topic、queue */ $routingKey = "easy.topic.queue", $delaySec = 30 //延迟秒数 ); //无延迟推入到指定到直链交换机 $instance->pushToTopic( $msg = time, //消息体内容 $exchange = "easy_topic_exchange", //交换机名称 $routingKey = "easy.topic.queue" );

2、消费消息

消费支持自动重试最多尝试重试5次每次消费失败后该消息将会被重新投入到消费队列中。重新的时间将会随着失败的次数增多逐渐推移,本客户端支持的推移策略如下:失败1次(1秒钟后会再被投递), 失败2次(2秒钟后会再被投递), 失败3次(4秒钟后会再被投递), 失败4次(8秒钟后会再被投递), 失败5次(16秒钟后会再被投递)

2-1、订阅模式订阅模式下的可靠消费

 $config = [ "host" => "127.0.0.1", "port" => "5672", "ur" => "guest", "password" => "guest", "vhost" => "/", "channel_max_num" => 10, ]; $instance = RabbitMq::getInstance($config); $instance->consume( $queueName = "direct_test_queue",//订阅的队列名称 $consumerTag = "c1",//消费标记 $exchange = "easy_direct_exchange",//交换机名称 $bindingKey = "direct_test_queue",//bindingkey如果是直链交换机需要同routingKey保持一致 $callback = function($msg){ $body = $msg->body; file_put_contents("./test.log", "time => " . time . "\t" . " body => " . $body . PHP_EOL , FILE_APPEND); //如果返回结果不绝对等于(===)true,那么将触发消息重试机制 return fal; }, //5次消费消费失败后失败消息将会投递到的队列名称 $failedQueue = "[emailprotected]" );

2-2、拉取模式拉取模式下的可靠消费

 $config = [ "host" => "127.0.0.1", "port" => "5672", "ur" => "guest", "password" => "guest", "vhost" => "/", "channel_max_num" => 10, ]; $instance = RabbitMq::getInstance($config); $instance->get( $queue = "get_queue", $exchange = "easy_fanout_exchange", $bindingKey = "", $callback = function($msg){ $body = $msg->body; file_put_contents("./test.log", "time => " .我的初恋情人 time . "\t" . " body => " . $body . PHP_EOL , FILE_APPEND); //如果返回结果不绝对等于(===)true,那么将触发消息重试机制 return fal; }, //5次消费消费失败后失败消息将会投递到的队列名称 $failedQueue = '[emailprotected]' );

本文发布于:2023-02-26 16:55:24,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/167740174255194.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:互联网常识:rabbitmq常见功能封装(php版本).doc

本文 PDF 下载地址:互联网常识:rabbitmq常见功能封装(php版本).pdf

标签:消息   交换机   将会   名称
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 站长QQ:55-9-10-26 专利检索|