设为首页 收藏本站
查看: 406|回复: 0

[经验分享] PHP RabbitMQ 使用记录

[复制链接]

尚未签到

发表于 2017-3-21 12:10:30 | 显示全部楼层 |阅读模式
  中文介绍 :http://baike.baidu.com/view/4095865.htm?fr=aladdin
  官方地址:http://www.rabbitmq.com/
  PHP扩展包:http://pecl.php.net/package/amqp
  1. 安装RabbitMQ  (unbuntu)
sudo apt-get install rabbitmq-server 
sudo /etc/init.d/rabbitmq-server start
  2. 安装librabbitmq  (unbuntu)
sudo apt-get install mercurial 
hg clone http://hg.rabbitmq.com/rabbitmq-c 
cd rabbitmq-c 
hg clone http://hg.rabbitmq.com/rabbitmq-codegen codegen 
autoreconf -i && ./configure && make && sudo make install 
 
3. 安装php-rabbit扩展  (unbuntu)
wget http://php-rabbit.googlecode.com/files/php-rabbit.r91.tar.gz 
tar -zxvf php-rabbit.r91.tar.gz 
cd php-rabbit.r91 
/path/to/php/bin/phpize 
./configure –with-amqp –with-php-config=/path/to/php/bin/php-config 
make && sudo make install 
编辑 php.ini 添加: 
extension=rabbit.so 
输出phpinfo看下是否扩展已经加载成功 (window apache下安装要注意同时在apache 配置文件中加载LoadFile "D:/xampp/php/rabbitmq.1.dll")
  4. 代码实例
  发送消息:

<?php
error_reporting(E_ERROR);
set_time_limit(0);
$exchangeName = 'demo';
$queueName = 'hello';
$routeKey = 'hello';
$message = 'Hello World!';
$connection = new AMQPConnection(array('host' => '127.0.0.1', 'port' => '5672', 'vhost' => '/', 'login' => 'guest', 'password' => 'guest'));
$connection->connect() or die("Cannot connect to the broker!\n");
try {
$channel = new AMQPChannel($connection);
$exchange = new AMQPExchange($channel);
$exchange->setName($exchangeName);
$queue = new AMQPQueue($channel);
$queue->setName($queueName);
$i = 0;
while ($i < 100) {
$message = $i .':'. date("Y-m-d H:i:s") ;
$exchange->publish($message, $routeKey);
$i +=1;
}
var_dump("[x] Sent 'Hello World!'");
} catch (AMQPConnectionException $e) {
var_dump($e);
exit();
}
$connection->disconnect();
?>
  处理消息队列

<?php
error_reporting(E_ERROR);
set_time_limit(0);
$exchangeName = 'demo';
$queueName = 'hello';
$routeKey = 'hello';
$connection = new AMQPConnection(array('host' => '127.0.0.1', 'port' => '5672', 'vhost' => '/', 'login' => 'guest', 'password' => 'guest'));
$connection->connect() or die("Cannot connect to the broker!\n");
$channel = new AMQPChannel($connection);
$exchange = new AMQPExchange($channel);
$exchange->setName($exchangeName);
$exchange->setType(AMQP_EX_TYPE_DIRECT);
$exchange->declare();
$queue = new AMQPQueue($channel);
$queue->setName($queueName);
$queue->declare();
$queue->bind($exchangeName, $routeKey);
var_dump('
  • Waiting for messages. To exit press CTRL+C');
    while (TRUE) {
    $queue->consume('callback');
    }
    $connection->disconnect();
    function callback($envelope, $queue) {
    $msg = $envelope->getBody();
    var_dump(" Received:" . $msg);
    $queue->nack($envelope->getDeliveryTag());
    }

  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-353041-1-1.html 上篇帖子: 用PHP写 下载网页 下篇帖子: php中的一些东西
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表