1.先安装rabbitmq-c,

wget https://github.com/alanxz/rabbitmq-c/releases/download/v0.8.0/rabbitmq-c-0.8.0.tar.gz

tar -zxvf rabbitmq-c-0.8.0.tar.gz

cd rabbitmq-c-0.8.0

./configure --prefix=/usr/local/rabbitmq-c

make && make install

2.接下来安装amqp的php扩展

cd amqp-1.9.3

phpize

./configure --with-php-config=/usr/local/php/bin/php-config

./configure --with-php-config=/usr/local/php/bin/php-config --with-librabbitmq-dir=/usr/local/rabbitmq-c

make && make install

3.重新php-fpm服务,查看php对应版本中是否AMQP扩展

systemctl  restart php-fpm

MQ一些基本的概念:

  • 消息生产者:就是提供消息的一方,这一方主要是面向业务或者用户的一方。
  • 消息消费者:就是接收消息并进行处理的一方,这一方一般都是在后端轮询的运行着,时刻准备接收新的消息并处理。
  • 信道(Channel):用一个形象的比喻就是,有了光纤,我们能够在光纤上进行打座机电话、看电视、上网等等,一个链接能够提供多种方式的通讯。
  • 消息队列(Message Queue):就是RabbitMQ对消息生产者生产的消息进行一定的排队从而形成队列以供消费者处理。
  • 消息队列创建者:消息队列是由消费者申请创建的,因为只有消费者知道怎么处理消息,而不是消息生产者创建的。
  • 消息路由转发:一个消费者可能会申请创建多个消息队列,那么生产者的消息应该传递到那个队列呢?这主要由Exchange来进行指定。

PHP版Demo:

消费者端: mq_server.php

function mq_server(){
set_time_limit(0);
//1.创建AMQP对象
$connnection = new \AMQPConnection(array(
'host' => 'localhost',
'posrt' => 5672,
'virtual' => '/',
'login' => "",
'password' => ""
));
$connnection->connect(); //2.创建信道channel,信道就像光纤,类似上面可以绑定个组件
$channelObj = new \AMQPChannel($connnection); //3.创建消息路由转发
$exchangeObj = new \AMQPExchange($channelObj);
$exchangeObj->setName('first');
$exchangeObj->setType(AMQP_EX_TYPE_DIRECT); //4.创建消息队列
$queueObj = new \AMQPQueue($channelObj);
$queueObj->setName('firstqueue'); //5.消息队列绑定exchange交换路由
$queueObj->bind('first','queue_route');
while(true){
$queueObj->consume(function (\AMQPEnvelope $envelope,\AMQPQueue $queue){
$msg = $envelope->getBody();
echo $msg;
$queue->ack($envelope->getDeliveryTag());
});
}
} mq_server();

生产者端:client.php

function mq_client(){
$connection = new \AMQPConnection(array(
"host" => "localhost",
"port" => 5672,
"virtual" => "/",
"login" => "",
"password" => ""
));
$connection->connect(); //创建信道channel
$channelObj = new \AMQPChannel($connection);
$exchangeObj = new \AMQPExchange($channelObj);
//信道channel
$exchangeObj->setName("first");
$exchangeObj->setType(AMQP_EX_TYPE_DIRECT); $messageBodoy = "welcome to RabbitMQ"; $exchangeObj->publish($messageBodoy,'queue_route'); $connection->disconnect();
} mq_client();

如何在Centos7安装rabbitmq的PHP扩展的更多相关文章

  1. 如何在Centos7安装swoole的PHP扩展

    1. 下载swoole源代码包 wget -c https://github.com/swoole/swoole-src/archive/v2.0.8.tar.gz 2.tar -zxvf v2.0. ...

  2. Centos7安装gearman和php扩展

    Centos7安装gearman和php扩展 标签(空格分隔): php,linux gearman所需要的依赖 yum install \ vim \ git \ gcc \ gcc-c++ \ w ...

  3. CentOS7 安装Redis和PHP-redis扩展

    aemonize yes Redis是一个key-value存储系统,属于我们常说的NoSQL.它遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的AP ...

  4. centos7安装PHP7的redis扩展

    前言: 在本篇博客中,我将给大家介绍如何在Centos7上安装PHP-Redis扩展,关于如何在Centos上安装redis的,可以参考另外一篇博客:Centos7安装redis 想要在php中操作r ...

  5. CentOS7 安装RabbitMQ

    第一.下载erlang和rabbitmq-server的rpm: http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos. ...

  6. centos7安装rabbitmq 总结

    centos7下安装rabbitmq 折腾了三天最后做了以下总结 先查看一电脑名  :示例 #hostname name 查看一下hosts配置文件:如果如下结果,就要修改下 #cat /etc/ho ...

  7. Centos7安装RabbitMQ解决Erlang依赖报错

    通过yum等软件仓库都可以直接安装RabbitMQ,但版本一般都较为保守. RabbitMQ官网提供了新版的rpm包(http://www.rabbitmq.com/download.html),但是 ...

  8. centos7 安装 rabbitmq

    主题 因为自己学习项目可能会用到rabbitmq..我又是第一次学习.以前没安装过.所以简单记录下我在centos7环境下安装rabbitmq的过程步骤,下次可以参考. 步骤 1.杂七杂八的东西 安装 ...

  9. Centos7 安装rabbitmq(转载)

    原文地址:http://blog.csdn.net/wenyu826/article/details/71108279 安装Erlang 从链接https://packages.erlang-solu ...

随机推荐

  1. python3.x 基础一

    1.python 格式化print #/usr/bin/env python #-*- coding: utf-8 -*- #Author:jenvid.yang # 连接符号+,可以连接多个变量或者 ...

  2. 【python基础】datetime类各种坑

    import datetime end_time = 1525104000000 d = datetime.datetime.fromtimestamp(end_time / 1000, None) ...

  3. 【谎言大揭秘】Modin真的比pandas运行更快吗?

    最近看了某公众号文章,推荐了所谓的神器,据说读取速度吊打pandas,可谓牛逼,事实真是这样吗? 来一起揭秘真相. 首先安装包. # pip install ray # pip install das ...

  4. Js 改变时间格式输出格式

    朋友看到的方法,非js原生的 自己封装到 function date2str(x,y) { var z={y:x.getFullYear(),M:x.getMonth()+1,d:x.getDate( ...

  5. PHP文件上传案例和函数

    $_FILES参数详解: $_FILES["file"]["name"] – 被上传文件的名称 $_FILES["file"][" ...

  6. 【JavaScript数据结构系列】03-队列Queue

    [JavaScript数据结构系列]03-队列Queue 码路工人 CoderMonkey 转载请注明作者与出处 1. 认识队列Queue结构 队列,跟我们的日常生活非常贴近,我们前面举例了食堂排队打 ...

  7. vue采用history路由的服务器部署问题

    发现部署问题 在部署的时候发现打开的页面是空白 之前部署原理 之前的页面都是作为静态文件形式打包上传到服务器上 http://www.xiedashuaige.cn/bolg2.0/#/home 就和 ...

  8. [JavaWeb基础] 021.Action中result的各种转发类型

    在struts2中, struts.xml中result的类型有多种,它们类似于struts1中的forward,常用的类型有dispatcher(默认值).redirect.redirectActi ...

  9. [工具-004]如何从apk中提取AndroidManifest.xml并提取相应信息

    跟上一篇类似,我们也需要对APK的一些诸如umengkey,ADkey,TalkingData进行验证,那么我们同样需要解压apk文件,然后提取其中的AndroidManifest.xml.然后解析x ...

  10. PHP获取今日、本周、本月、今年的开始日期和结束日期

    /** * 今天开始的Y-m-d H:i:s * * @return string */ public static function beginToday() { return date('Y-m- ...