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

php的rabbitmq队列持久化设置

admin8年前 (2018-07-03)技术文档1740

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();



分享到:

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

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

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

分享给朋友:

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

php 获取客户端的ip、地理信息、浏览器信息、本地真实ip

<?php  // 作用取得客户端的ip、地理信息、浏览器http://blog.qita.in  class get_gust_info {        ////获得访客浏...

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\...

Discuz!二次开发必备知识——DZ程序文件目录含义

分类: DZ程序文件目录含义基于7.0的标准程序,部分与插件无关的文件不作说明文件颜色说明:红色:程序核心文件,修改这类文件时千万要注意安全!橙色:做插件几乎不会用到的文件,大概了解功能就可以了,其实我也不推荐修改这些文件绿色:函数类文件,许多功能强大的自定义函数可以调用这类文件来...

wamp虚拟主机配置

1、首先打开apache的配置文件httpd.conf,并去掉#Include conf/extra/httpd-vhosts.conf前面的#,启用虚拟主机功能2、先把localhost配置好,免得以后访问localhost出现问题,我的wamp项目根目录是D:\wamp\www。将下面信息添加到...

php二维数组转换为一维数组的几种方法

在开发过程中,我们经常需要将二维数组转为一维数组,个人总结了2种方法,分享给大家如何将下面的二维数组转为一维数组。复制代码 代码如下:$msg = array(  array(    'id'=>'45',    'name'=>'...

发表评论

访客

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