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

php的rabbitmq队列持久化设置

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

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队列持久化设置 ” 的相关文章

网页背景全屏拉伸的css效果

background: url(“http://www.wyzu.cn/uploadfile/2013/0220/20130220112423140.jpg”) repeat fixed center top / cover #595959;...

php检查用户名是否符合规定

<?php   /**  * 检查用户名是否符合规定 (两个字符以上,只能有中文,字母,数字,下划线的)  *  * @param STRING $username 要检查的用户名...

ThinkPHP分页的实现

分页类需要和查询相结合,我们可以使用ThinkPHP自带的limit方法或者page方法,目的就是为了获取当前分页的数据(也有先获取完整数据然后前端分页显示的方法,不在本文描述内容中,也不建议)。使用limit方法或者page方法是和数据库类型无关的。我们首先在数据库里面创建一个think_data...

PHP数组和Json之间的转换

        之所以要用到Json,很多时候是因为使用ajax对象时,程序与JS函数之间的数据交互。因为JS不认识PHP中的数组,PHP也不认识JS中的数组或对象。Json很好的解决了这个问题。Json简介  ...

jQuery结合PHP+MySQL实现二级联动下拉列表[实例]

jQuery结合PHP+MySQL实现二级联动下拉列表[实例]

二级联动的实现方法还真不少,实用性也很强,这里结合一个学生信息表的实例,来分享一下我的实现过程实现原理:根据省份值的变动,通过jQuery把sf_id传给后台php文件处理,php通过查询MySQl数据库,得到对应的地市名,并返回JSON数据给前端处理,即实现联动效果!为便于讲解,这里直接给出省份:...

php取整函数ceil,floor,round,intval函数的区别

开发过程中,遇到数据处理取整的时候,你会用哪个呢,小涛来介绍一下:PHP取整函数有ceil,floor,round,intval,下面详细介绍一下:1、ceil — 进一法取整说明float ceil ( float $value )返回不小于 ...     ...

发表评论

访客

看不清,换一张

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