热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux安装rabbitMQ后在PHP中的操作

一、前言在Linux上安装rabbitMQ,并通过浏览器访问控制台,在php中操作rabbitMQ。二、安装rabbitMQrabbitMQ是用E
一、前言

在Linux上安装rabbitMQ,并通过浏览器访问控制台,在php中操作rabbitMQ。

二、安装rabbitMQ

rabbitMQ是用Erlang语言编写的,所以安装rabbitMQ需要先安装Erlang,安装完Erlang后在去安装rabbitMQ(两步走)。

2.1 查看版本兼容性(必须)

如果 Erlang 版本和 rabbitMQ 版本不兼容,则无法启动。安装前一定要看下版本的兼容性。

戳我: Erlang 版本和 rabbitMQ 的兼容表

在这里插入图片描述

2.2 安装Erlang

在安装前先更新下系统:

yum -y update

Erlang在默认的YUM存储库中不可用,所以需要安装EPEL存储库:

yum -y install epel-release
yum -y update

安装Erlang:

yum -y install erlang socat

查看版本:

erl -version

2.3 安装rabbitMQ

找到和 Erlang 兼容的版本:rpm文件地址,下载后缀为 rpm 的文件。

在这里插入图片描述

例如,我的 Erlang 所兼容的rabbitMQ版本地址为(举例子,请严格参考上述网站的版本兼容信息):

https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.18/rabbitmq-server-3.8.18-1.el7.noarch.rpm

下载rpm文件:

wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.18/rabbitmq-server-3.8.18-1.el7.noarch.rpm

导入GPG密钥:

rpm –import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc

运行RPM安装RPM包:

rpm -Uvh rabbitmq-server-3.8.18-1.el7.noarch.rpm

其中,rabbitmq-server-3.8.18-1.el7.noarch.rpm 一定要是你下载的 rpm 文件地址。

三、启动和停止rabbitMQ

开启前,请确保15672端口是否开放,如未开放,请去防火墙或服务商安全组中开放。

#启动服务
systemctl start rabbitmq-server.service#设置开机启动
systemctl enable rabbitmq-server.service#停止开机启动
systemctl disable rabbitmq-server.service#重新启动服务
systemctl restart rabbitmq-server.service#查看服务当前状态
systemctl status rabbitmq-server.service#查看所有已启动服务
systemctl list-units --type=service

四、访问Web管理控制台

启动web控制台:

rabbitmq-plugins enable rabbitmq_management

给RabbitMQ用户提供所有权:

chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/

给RabbitMQ Web控制台创建管理用户:

rabbitmqctl add_user admin password
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

将 admin 设置为首选用户。

其中,admin为用户名,password为密码,其中用户名guest,密码guest为默认用户名和密码。

访问你的ip地址:端口号,例如我的:http://122.23.63.419:15672

在这里插入图片描述
在这里插入图片描述

至此,rabbitMQ安装完毕。


如果你需要在php中操作rabbitMQ,请继续往下看,否则,只看上述部分即可。



五、PHP中操作rabbitMQ

php操作 rabbitMQ需要安装以下扩展 amqp 扩展,但是安装 amqp扩展前需要安装 rabbitmq-c。

5.1 安装 rabbitmq-c

wget -c https://github.com/alanxz/rabbitmq-c/releases/download/v0.8.0/rabbitmq-c-0.8.0.tar.gztar zxf rabbitmq-c-0.8.0.tar.gzcd rabbitmq-c-0.8.0./configure --prefix=/usr/local/rabbitmq-c-0.8.0make && make install

5.2 安装amqp

wget -c http://pecl.php.net/get/amqp-1.9.3.tgztar zxf amqp-1.9.3.tgzcd amqp-1.9.3/usr/local/php/bin/phpize./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c-0.8.0make && make install

5.3 修改php.ini配置文件

extension = amqp.so

安装好后重启下fpm。

使用 php -m 查看是否安装成功:

[root@VM-8-5-centos ~]# php -m
[PHP Modules]
amqp
bcmath
Core
ctype
curl
date
dom
event
fileinfo
filter
ftp
gd
gettext
hash
iconv
intl
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
Reflection
session
shmop
SimpleXML
soap
sockets
sodium
SPL
sqlite3
standard
swoole
sysvsem
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
zip
zlib[Zend Modules]

5.4 在php中的使用

server.php(生产):


$e_name = 'e_test'; //交换机名
$q_name = 'q_test'; //队列名
$k_route = 'route_test'; //路由key
//创建连接和channel
$conn = new AMQPConnection();
if (!$conn->connect()) {die("Cannot connect to the broker!\n");
}
//在连接内创建一个通道
$channel = new AMQPChannel($conn);
//创建交换机
$ex = new AMQPExchange($channel);
$ex->setName($e_name);
//设置交换机类型
$ex->setType(AMQP_EX_TYPE_DIRECT);
//设置交换机持久
$ex->setFlags(AMQP_DURABLE);
//声明交换机并输出状态
echo "Exchange Status:" . $ex->declareExchange() . "\n";
//创建队列
$q = new AMQPQueue($channel);
$q->setName($q_name);
//设置队列持久
$q->setFlags(AMQP_DURABLE);
//声明消息队列并输出状态
echo "Message Total:" . $q->declareQueue() . "\n";
//绑定交换机与队列,并指定路由键
echo 'Queue Bind: ' . $q->bind($e_name, $k_route) . "\n";
//阻塞模式接收消息
echo "waiting reeive Message...\n";
//接收消息并进行处理的回调方法
function processMessage($envelope, $queue)
{//取消息内容$msg = $envelope->getBody();// echo $msg . "\n"; //处理消息//显式确认,队列收到消费者显式确认后,会删除该消息print_r($envelope->getDeliveryTag());$queue->ack($envelope->getDeliveryTag());
}
//设置消息队列消费者回调方法,并进行阻塞
$q->consume('processMessage');
//下面是隐式确认,不推荐
//$q->consume('processMessage', AMQP_AUTOACK);
$conn->disconnect();

client.php(消费):

$e_name = 'e_test'; //交换机名,和服务端一至
$k_route = 'route_test'; //路由key,和服务端一至
//创建连接和channel
$conn = new AMQPConnection();
if (!$conn->connect()) {die("Cannot connect to the broker!\n");
}
$channel = new AMQPChannel($conn);
//创建交换机对象
$ex = new AMQPExchange($channel);
$ex->setName($e_name);
$ex->setType(AMQP_EX_TYPE_DIRECT); //direct类型
$ex->setFlags(AMQP_DURABLE); //持久化
$ex->declareExchange();
//发送消息
//$channel->startTransaction(); //开始事务
for ($i &#61; 0; $i < 1115; &#43;&#43;$i) {sleep(1); //休眠1秒//消息内容$message &#61; "TEST MESSAGE!" . date("h:i:sa");echo "Send Message:" .$i."&#xff0c;发送状态". $ex->publish($message, $k_route) . "\n";
}
//$channel->commitTransaction(); //提交事务
$conn->disconnect();

在cli下&#xff0c;开两个窗口&#xff0c;运行这两个文件即可&#xff0c;配合着web控制台管理。


推荐阅读
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
author-avatar
创业语录分享_689
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有