当前位置:首页 > 技术文档 > 正文内容

php的rabbitmq队列持久化设置

admin7年前 (2018-07-03)技术文档1739

php的rabbitmq队列持久化设置,这个功能是一个十分伟大的功能,我们在ecshop注册发短信的时候,或者程序要发邮件的时候,往往会拖跨网络速度,在高并发的时候,这个时候我们将数据写到队列中,通过后断消费者去处理,能大大提高网络运行效率。以下是php针对rabbitmq队列的持久化处理。

$conn_args = array(
    'host' => '172.17.0.2',
    'port' => '5672',
    'login' => 'admin',  //默认的用户名和密码
    'password' => '123456',
    'vhost'=>'/'
);
$e_name = 'business'; //交换机名
$q_name = 'business_worker'; //队列名
$k_route = 'systemCode'; //路由key


//创建连接和channel
$conn = new \AMQPConnection($conn_args);
if (!$conn->connect()) {
    die("Cannot connect to the broker!\n");
}
$channel = new \AMQPChannel($conn);

//消息内容
$message = "TEST MESSAGE! 测试消息!";

//创建交换机
$ex = new \AMQPExchange($channel);
$ex->setName($e_name);
$ex->setType(AMQP_EX_TYPE_DIRECT); //direct类型  ,精准投递,根据交换机publish的路由信息队列绑定时才会进行
$ex->setFlags(AMQP_DURABLE); //持久化 ,支持rabbitMq重启时交换机自动恢复
echo "Exchange Status:".$ex->declareExchange()."\n";   //查看如果交换机不存在则进行创建

//创建队列
$q = new \AMQPQueue($channel);
$q->setName($q_name);
$q->setFlags(AMQP_DURABLE); //队列持久化
echo "Message Total:".$q->declareQueue()."\n";   //同样,如果不存在则创建
$q->bind($e_name,$q_name);

//发送消息
//$channel->startTransaction(); //开始事务
for($i=0; $i<5; ++$i){
    //如果需要进行消息持久化机制的话,则进行如下设置
    //$ex->publish($message,$k_route,AMQP_NOPARAM,array());,如果delivery是1的话,则表明是非持久化,持久化的时候注意使用AUTOASK。则处理完的消息可以自动删除
    //不需要的话则进行这样:$ex->publish($message, $k_route,AMQP_NOPARAM,array('delivery_mode'=>2, 'priority'=> 9));
    echo "Send Message:". $ex->publish($i.'==='.$message,$q_name,AMQP_NOPARAM, array('delivery_mode'=>2, 'priority'=> 9))."<br>";
}
//$channel->commitTransaction(); //提交事务

$conn->disconnect();



分享到:

扫描二维码推送至手机访问。

版权声明:本文由云河空间发布,如需转载请注明出处。

本文链接:http://yuyunhe.cn/index.php/post/269.html

分享给朋友:

“php的rabbitmq队列持久化设置 ” 的相关文章

抓取最近八天天气(非利用接口,直接从网站提取)

<?php    /*     *特别注意,第一天没有最高气温数据,第八天没有最低气温数据     *注意对数字进行过滤时不要忘记对负号进行判断   &nb...

dz中“QQ互联”出现Discuz! Database Error解决办法

dz中“QQ互联”出现Discuz! Database Error解决办法

dz中QQ登陆出现Discuz! Database Error解决办法dz站长朋友相信肯定有人遇到做的QQ互联登录,根本没法用,这让网站的社交登录性能大打折扣,这么解决?下面就看大神的神操作!...

jQuery编程的最佳实践

加载jQuery1.坚持使用CDN来加载jQuery,这种别人服务器免费帮你托管文件的便宜干嘛不占呢。点击查看使用CDN的好处,点此查看一些主流的jQuery CDN地址。<script type="text/javascript" src="...

wamp下虚拟主机的配置

1  编辑httpd.conf,查找Include conf/extra/httpd-vhosts.conf,把前面注释符号“#”删掉。 2  编辑httpd-vhosts.conf,我把WAMPServer安装在D:/wamp,所以我这里的路径是D:\wamp\Apache2\...

推荐一些国内的Jquery CDN免费服务

Jquery是个非常流行的JS前端框架,在很多网站都能看到它的身影。很多网站都喜欢采用一些Jquery CDN加速服务,这样网站加载jquery会更快。之前火端网络的一些网站都是使用Google的jquery CDN,如:http://ajax.googleapis.com/ajax/lib...

PHP利用Curl模拟登录并获取数据例子

PHP利用Curl模拟登录并获取数据例子

几乎所有的程序员来模仿用户登录或抓取数据都会使用到curl函数,下面我来给各位介绍利用curl函数实现登录并抓取数据,希望下面例子对各位有帮助。PHP的curl()在抓取网页的效率方面是比较高的,而且支持多线程,而file_get_contents()效率就要稍低些,当然,使用curl时需要开启下c...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。