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

php的rabbitmq队列持久化设置

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

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 判断手机访问

//手机来访 function is_mobile() {     $user_agent = $_SERVER['HTTP_USER_AGENT'];    &n...

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

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

php无限分类-总结

//php代码部分  <?php         header('Content-Type:text/html;charset=utf-8');    ...

Zend Studio 8打开utf-8文件出现乱码解决方法

Zend Studio 8打开utf-8文件出现乱码解决方法

今天安装了zend studio 8.0.1,运行了一个PHP程序项目(项目文件编码为utf-8),发现utf-8文件中的中文全部变成乱码了,后面终于经过寻找探索,找到了问题所 在:虽然你的项目是UTF-8编码文件,但是当通过zend studio工具运行打开时,是以工具里设定的GBK编码...

dz第三方模块添加方法

dz第三方模块添加方法

使用dz做网站的朋友有时候会用到第三方模块专题,这就会遇到一个模块通信的问题,可是弄了半天就是“数据无法识别,请返回”, 也够雷人的,ok,这你就给大家分享下本人的一点经验,以供大家参考!dz第三方模块添加方法...

jQuery编程的最佳实践

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

发表评论

访客

看不清,换一张

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