柚子快報激活碼778899分享:php RabbitMQ 安裝
柚子快報激活碼778899分享:php RabbitMQ 安裝
目錄
一、安裝RabbitMQ1、Linux 安裝⑴、官網(wǎng)rpm包安裝①、下載rpm安裝包官網(wǎng)下載erlangrabbitmq
packagecloud下載erlangrabbitmq
②、安裝 erlang③、安裝rabbitmq
⑵、packagecloud快速安裝⑶、添加用戶賬號及權(quán)限并登陸⑷、卸載erlang與rabbitmq卸載rabbitmq卸載erlang
2、Windows 安裝⑴、安裝erlang⑵、安裝rabbitmq
二、安裝擴展及連接測試⑴、Linux安裝擴展①、安裝 rabbitmq-c 擴展遇到的問題cmake 版本過低openssl版本過低
②、安裝amqp擴展③、composer安裝rabbitmq
⑵、Windows安裝擴展①、安裝amqp擴展②、啟用sockets擴展③、composer安裝rabbitmq
⑶、rabbitmq連接測試①、創(chuàng)建composer.json文件②、創(chuàng)建send.php、receive.php③、測試
一、安裝RabbitMQ
1、Linux 安裝
RabbitMQ是一個開源的遵循AMQP協(xié)議實現(xiàn)的基于 Erlang 語言編寫,所以在安裝 RabbitMQ 之前,必須安裝新版本的 Erlang/OTP 。 標準的Red Hat,F(xiàn)edora,CentOS 提供的是的 Erlang 舊版本,不能用于運行最新的RabbitMQ版本。
支持的系統(tǒng)版本參考 官方文檔。
我的服務(wù)器系統(tǒng)是CentOS 7.5 64位,Centos 停止維護有三個版本,即:CentOS 6(2020年11月30日停止更新)、CentOS7(2024年6月30日停止更新)、CentOS 8(2021年底停止更新),解決方案:
在2024年6月之前基于兩款新操作系統(tǒng)(CentOS Stream、RHEL訂閱版),ubuntu、openEuler、Alibaba Cloud Linux 2(開源系統(tǒng))進行系統(tǒng)適配開發(fā)、測試。
RabbitMQ 和 Erlang/OTP 兼容性:
RabbitMQ版本最低要求的 Erlang/OTP支持的最大 Erlang/OTP說明3.12.025.026.0此版本系列與Erlang 26兼容。Erlang中對OpenSSL 3.0的支持被認為已經(jīng)足夠成熟,可以用于生產(chǎn)。3.11.0 ~ 3.11.1825.025.3.xErlang26引入了許多與網(wǎng)絡(luò)和TLS相關(guān)的突破性變化。RabbitMQ與Erlang 26的兼容性將另行公布。從Erlang25.1開始,Erlang中對OpenSSL 3.0的支持被認為已經(jīng)足夠成熟,可以用于生產(chǎn)。25.0.2之前的Erlang 25受到CVE-2022-37026的影響,這是一種嚴重程度嚴重的CVE(CVSS 3.x基本分數(shù):9.8)3.10.19 ~ 3.10.2424.3.4.825.3.x24.3是Erlang 24中唯一維護(更新)的系列。從Erlang25.1開始,Erlang中的OpenSSL 3.0支持被認為已經(jīng)足夠成熟,可以考慮用于生產(chǎn)。25.0.2之前的Erlang 25和24.3.4.2之前的24受到CVE-2022-37026的影響,這是一種具有嚴重性的CVE(CVSS 3.x基本分數(shù):9.8)3.10.14 ~ 3.10.1824.325.224.3是Erlang 24中唯一維護(更新)的系列。從Erlang25.1開始,Erlang中的OpenSSL 3.0支持被認為已經(jīng)足夠成熟,可以考慮用于生產(chǎn)。25.0.2之前的Erlang 25和24.3.4.2之前的24受到CVE-2022-37026的影響,這是一種具有嚴重性的CVE(CVSS 3.x基本分數(shù):9.8)3.10.8 ~ 3.10.1324.225.2從Erlang25.1開始,Erlang中的OpenSSL 3.0支持被認為已經(jīng)足夠成熟,可以考慮用于生產(chǎn)。25.0.2之前的Erlang 25和24.3.4.2之前的24受到CVE-2022-37026的影響,這是一種具有嚴重性的CVE(CVSS 3.x基本分數(shù):9.8)3.10.5 ~ 3.10.723.225.225.0.2之前的Erlang 25和24.3.4.2之前的24受到CVE-2022-37026的影響,這是一種具有嚴重性的CVE(CVSS 3.x基本分數(shù):9.8)Erlang 23支持已于2022年7月31日停止。3.10.0 ~ 3.10.423.224.3Erlang 23支持已于2022年7月31日停止。
⑴、官網(wǎng)rpm包安裝
①、下載rpm安裝包
官網(wǎng)下載
官網(wǎng)下載地址:Erlang、RabbitMQ。
erlang
選擇自己需要的 erlang 版本。
rabbitmq
先根據(jù)標簽找到需要的版本,再去選擇適合的安裝包:
packagecloud下載
除了官網(wǎng),還可以使用 packagecloud 的下載地址。
erlang
rabbitmq
由于我的服務(wù)器系統(tǒng)是CentOS 7.5 64位,所以必須選擇支持CentOS 7的Erlang 和 RabbitMQ 版本,下載包的名字中的 el7,el8,el9分別代表CentOS7,CentOS8,CentOS9;我這里下載的是舊版本: erlang-23.3.4.11-1.el7.x86_64.rpm 和 rabbitmq-server-3.10.0-1.el7.noarch.rpm。
rmp包可以直接下載,使用 SCP 上傳上去,又或者直接使用 wget 下載。
②、安裝 erlang
[root@VM-0-12-centos ~]# wget --content-disposition "https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-23.3.4.11-1.el7.x86_64.rpm/download.rpm?distro_version_id=140"
[root@VM-0-12-centos ~]# rpm -ivh erlang-23.3.4.11-1.el7.x86_64.rpm
warning: erlang-23.3.4.11-1.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 6026dfca: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:erlang-23.3.4.11-1.el7 ################################# [100%]
[root@VM-0-12-centos ~]#
[root@VM-0-12-centos ~]# erl -v # 安裝成功
Erlang/OTP 23 [erts-11.2.2.10] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe]
Eshell V11.2.2.10 (abort with ^G)
1>
[root@VM-0-12-centos ~]#
③、安裝rabbitmq
[root@VM-0-12-centos ~]# wget --content-disposition "https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/7/rabbitmq-server-3.10.0-1.el7.noarch.rpm/download.rpm?distro_version_id=140"
[root@VM-0-12-centos ~]# rpm -ivh rabbitmq-server-3.10.0-1.el7.noarch.rpm
warning: rabbitmq-server-3.10.0-1.el7.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID 6026dfca: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:rabbitmq-server-3.10.0-1.el7 ################################# [100%]
[root@VM-0-12-centos ~]#
[root@VM-0-12-centos ~]#
[root@VM-0-12-centos ~]# systemctl start rabbitmq-server # 啟動rabbitmq
[root@VM-0-12-centos ~]# systemctl status rabbitmq-server # 查看rabbitmq狀態(tài)
● rabbitmq-server.service - RabbitMQ broker
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2023-06-12 17:26:18 CST; 8min ago
Main PID: 14354 (beam.smp)
CGroup: /system.slice/rabbitmq-server.service
├─14354 /usr/lib64/erlang/erts-11.2.2.10/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -sbwt none -sb...
├─14369 erl_child_setup 32768
├─14394 /usr/lib64/erlang/erts-11.2.2.10/bin/epmd -daemon
├─14414 inet_gethost 4
└─14415 inet_gethost 4
Jun 12 17:26:17 VM-0-12-centos rabbitmq-server[14354]: Doc guides: https://rabbitmq.com/documentation.html
Jun 12 17:26:17 VM-0-12-centos rabbitmq-server[14354]: Support: https://rabbitmq.com/contact.html
Jun 12 17:26:17 VM-0-12-centos rabbitmq-server[14354]: Tutorials: https://rabbitmq.com/getstarted.html
Jun 12 17:26:17 VM-0-12-centos rabbitmq-server[14354]: Monitoring: https://rabbitmq.com/monitoring.html
Jun 12 17:26:17 VM-0-12-centos rabbitmq-server[14354]: Logs: /var/log/rabbitmq/rabbit@VM-0-12-centos.log
Jun 12 17:26:17 VM-0-12-centos rabbitmq-server[14354]: /var/log/rabbitmq/rabbit@VM-0-12-centos_upgrade.log
Jun 12 17:26:17 VM-0-12-centos rabbitmq-server[14354]:
Jun 12 17:26:17 VM-0-12-centos rabbitmq-server[14354]: Config file(s): (none)
Jun 12 17:26:18 VM-0-12-centos systemd[1]: Started RabbitMQ broker.
Jun 12 17:26:18 VM-0-12-centos rabbitmq-server[14354]: Starting broker... completed with 3 plugins.
[root@VM-0-12-centos ~]#
參考其他博客時,都說需要安裝 socat 依賴,但是我這里直接安裝成功,如果有報錯的的話就安裝一下:
yum install -y socat
安裝管理工具RabbitMQ-Plugins:
rabbitmq-plugins enable rabbitmq_management
15672端口 訪問成功:
接下來可直接查看下面的 【添加用戶賬號及權(quán)限并登陸】。
⑵、packagecloud快速安裝
packagecloud也是提供了快速安裝方式的RabbitMQ,安裝的時候我發(fā)現(xiàn)腳本它會自動選擇最packagecloud中適合當前系統(tǒng)的最高版本。
使用腳本準備安裝 erlang:curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
使用 packagecloud腳本 準備安裝 rabbitmq server:curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
yum 安裝 erlang:yum -y install erlang
yum 安裝 rabbitmq server:yum -y install rabbitmq-server
啟動 RabbitMQ 服務(wù):systemctl start rabbitmq-server
查看 RabbitMQ 服務(wù)狀態(tài):systemctl status rabbitmq-server
安裝管理工具RabbitMQ-Plugins:rabbitmq-plugins enable rabbitmq_management
使用 15672端口 打開管理網(wǎng)頁:
⑶、添加用戶賬號及權(quán)限并登陸
添加 RabbitMQ 用戶,并設(shè)置權(quán)限:
rabbitmqctl add_user [username] [password] # 添加用戶賬號
rabbitmqctl set_user_tags [username] administrator # 給用戶添加權(quán)限
[root@VM-0-12-centos ~]# rabbitmqctl add_user rabbitmq rabbitmq
Adding user "rabbitmq" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.
[root@VM-0-12-centos ~]# rabbitmqctl set_user_tags rabbitmq administrator
Setting tags for user "rabbitmq" to [administrator] ...
[root@VM-0-12-centos ~]#
回到上面截圖頁面,登錄rabbitmq:
RabbitMQ常用命令:
查看RabbitMQ狀態(tài):
rabbitmqctl status
啟動RabbitMQ服務(wù):
systemctl start rabbitmq-server
停止RabbitMQ服務(wù):
systemctl stop rabbitmq-server
重啟RabbitMQ服務(wù):
systemctl restart rabbitmq-server
查看RabbitMQ用戶列表:
rabbitmqctl list_users
刪除RabbitMQ用戶:
rabbitmqctl delete_user [username]
修改RabbitMQ用戶密碼:
rabbitmqctl [oldpassword] [username] [newpassword]
⑷、卸載erlang與rabbitmq
如果需要熟悉不同安裝方式,或者版本不兼容的話需要卸載:
卸載rabbitmq
# 卸載前先停掉rabbitmq服務(wù)
service rabbitmq-server stop
# 查看rabbitmq安裝的相關(guān)列表
yum list | grep rabbitmq
# 卸載rabbitmq已安裝的相關(guān)內(nèi)容
yum -y remove rabbitmq-server.noarch
卸載erlang
查看erlang安裝的相關(guān)列表
yum list | grep erlang
卸載erlang已安裝的相關(guān)內(nèi)容
卸載erlang已安裝的相關(guān)內(nèi)容
yum -y remove erlang-*
yum remove erlang.x86_64
2、Windows 安裝
Windows 安裝直接在官網(wǎng)中下載exe應(yīng)用程序,這里我就直接下載了最新版本:otp_win64_26.0.1.exe 和 rabbitmq-server-3.12.0.exe(參考上面RabbitMQ 和 Erlang/OTP 兼容性)。
⑴、安裝erlang
下載erlang: 下載成功后直接雙擊otp_win64_26.0.1.exe開始安裝(一直next即可,我這里安裝位置改到了D盤),安裝成功后如下:
環(huán)境變量添加 erlang 配置:
cmd 執(zhí)行 erl -v 測試是否安裝成功:
⑵、安裝rabbitmq
和erlang 一樣,直接雙擊應(yīng)用程序開始安裝(一直next,只改了安裝位置),安裝成功后如下: 環(huán)境變量PATH追加 rabbitmq 的 sbin 路徑: 安裝管理工具RabbitMQ-Plugins: 訪問http://localhost:15672/,(默認賬號:guest,密碼:guest)就能進入RabbitMQ管理界面:
二、安裝擴展及連接測試
如果PHP環(huán)境下使用 RabbitMQ 的話,要先在本地安裝 php-amqplib 擴展,這個對應(yīng)的是 amqp 擴展,擴展下載地址。
⑴、Linux安裝擴展
Linux系統(tǒng)下 php 操作 rabbitmq 需要安裝 amqp 擴展,但是安裝 amqp 擴展前需要安裝 rabbitmq-c。
rabbitmq-c是一個用于C語言的,與AMQP server進行交互的client庫,AMQP協(xié)議為版本0-9-1。rabbitmq-c與server進行交互前需要首先進行l(wèi)ogin操作,在操作后,可以根據(jù)AMQP協(xié)議規(guī)范,執(zhí)行一系列操作。 我個人理解就是 php 底層是 C 語言, 而rabbitmq 是基于 erlang 語言,所以abbitmq-c擴展就是用于php與erlang的交互。
①、安裝 rabbitmq-c 擴展
rabbitmq-c 擴展下載地址。
cd /usr/local
git clone https://github.com/alanxz/rabbitmq-c.git
cd /usr/local/rabbitmq-c
mkdir build && cd build \
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/rabbitmq-c ..
cmake --build . --target install
cd /usr/local/rabbitmq-c/lib64
cp /usr/local/rabbitmq-c/lib64/librabbitmq.so /usr/lib
cp /usr/local/rabbitmq-c/lib64/librabbitmq.so.4 /usr/lib
echo "include /usr/local/lib" >> /etc/ld.so.conf
ldconfig
如果openssl版本過低,下載不了,就直接瀏覽器下載,SCP上傳一下
[root@VM-0-12-centos local]# wget -c https://github.com/alanxz/rabbitmq-c/archive/refs/tags/v0.13.0.tar.gz
[root@VM-0-12-centos local]# tar zxf v0.13.0.tar.gz
[root@VM-0-12-centos local]# cd /usr/local/rabbitmq-c-0.13.0/
[root@VM-0-12-centos rabbitmq-c-0.13.0]# mkdir build && cd build
[root@VM-0-12-centos build]# ls
CMakeCache.txt CMakeFiles
[root@VM-0-12-centos build]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/rabbitmq-c ..
...
[root@VM-0-12-centos build]# cmake --build . --target install
...
[root@VM-0-12-centos build]# cd /usr/local/rabbitmq-c/lib64/
[root@VM-0-12-centos lib64]# cp /usr/local/rabbitmq-c/lib64/librabbitmq.so /usr/lib
[root@VM-0-12-centos lib64]# cp /usr/local/rabbitmq-c/lib64/librabbitmq.so.4 /usr/lib
[root@VM-0-12-centos lib64]# echo "include /usr/local/lib" >> /etc/ld.so.conf
[root@VM-0-12-centos lib64]# ldconfig
[root@VM-0-12-centos lib64]#
遇到的問題
cmake 版本過低
[root@VM-0-12-centos build]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/rabbitmq-c ..
CMake Error at CMakeLists.txt:4 (cmake_minimum_required):
CMake 3.12...3.18 or higher is required. You are running version 2.8.12.2
-- Configuring incomplete, errors occurred!
[root@VM-0-12-centos build]# cmake --version
cmake version 2.8.12.2
解決方法:
打開 這里,下載高版本的cmake,我選擇的是 cmake-3.12.4.tar.gz:[root@VM-0-12-centos ~]# wget https://cmake.org/files/v3.12/cmake-3.12.4.tar.gz
[root@VM-0-12-centos ~]# tar zxf cmake-3.12.4.tar.gz
[root@VM-0-12-centos ~]# cd cmake-3.12.4/
[root@VM-0-12-centos cmake-3.12.4]# ./bootstrap
...
[root@VM-0-12-centos cmake-3.12.4]# make && make install
...
[root@VM-0-12-centos cmake-3.12.4]# cmake --version
cmake version 3.12.4
CMake suite maintained and supported by Kitware (kitware.com/cmake).
[root@VM-0-12-centos cmake-3.12.4]#
openssl版本過低
解決辦法:
升級openssl:[root@VM-0-12-centos local]# wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
[root@VM-0-12-centos local]# tar -zxf openssl-1.1.1g.tar.gz
[root@VM-0-12-centos local]# cd openssl-1.1.1g
[root@VM-0-12-centos openssl-1.1.1g]# ./config --prefix=/usr/local/openssl shared zlib
...
[root@VM-0-12-centos openssl-1.1.1g]# make depend
[root@VM-0-12-centos openssl-1.1.1g]# make && make install
...
[root@VM-0-12-centos openssl-1.1.1g]# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
[root@VM-0-12-centos openssl-1.1.1g]# ln -s /usr/local/openssl/include/openssl /usr/include/openssl
[root@VM-0-12-centos openssl-1.1.1g]# echo "/usr/local/ssl/lib" >> /etc/ld.so.conf # 更新動態(tài)鏈接庫數(shù)據(jù)
[root@VM-0-12-centos openssl-1.1.1g]# ldconfig -v # 重新加載動態(tài)鏈接庫
[root@VM-0-12-centos openssl-1.1.1g]# ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib
[root@VM-0-12-centos openssl-1.1.1g]# ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib
[root@VM-0-12-centos openssl-1.1.1g]# openssl version
OpenSSL 1.1.1g 21 Apr 2020
[root@VM-0-12-centos lib]#
②、安裝amqp擴展
wget或者直接下載使用SCP上傳:
[root@VM-0-12-centos ~]# wget http://pecl.php.net/get/amqp-1.11.0.tgz
[root@VM-0-12-centos ~]# tar -zxf amqp-1.11.0.tgz
[root@VM-0-12-centos ~]# cd amqp-1.11.0/
[root@VM-0-12-centos amqp-1.11.0]# ls
amqp_basic_properties.c amqp_envelope.c amqp_type.h
amqp_basic_properties.h amqp_envelope.h benchmark.php
amqp.c amqp_exchange.c config.m4
amqp_channel.c amqp_exchange.h config.w32
amqp_channel.h amqp_methods_handling.c CREDITS
amqp_connection.c amqp_methods_handling.h LICENSE
amqp_connection.h amqp_queue.c php5_support.h
amqp_connection_resource.c amqp_queue.h php7_support.h
amqp_connection_resource.h amqp_timestamp.c php_amqp.h
amqp_decimal.c amqp_timestamp.h stubs
amqp_decimal.h amqp_type.c tests
[root@VM-0-12-centos amqp-1.11.0]#
解壓后,使用phpize安裝擴展,下面的路徑換成自己的:
[root@VM-0-12-centos amqp-1.11.0]# find / -name phpize
/usr/local/php/bin/phpize
/usr/bin/phpize
[root@VM-0-12-centos amqp-1.11.0]# /usr/local/php/bin/phpize
[root@VM-0-12-centos amqp-1.11.0]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c
...
[root@VM-0-12-centos amqp-1.11.0]# make && make install
...
Build complete.
Don't forget to run 'make test'.
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/
[root@VM-0-12-centos amqp-1.11.0]#
修改配置文件php.ini,追加以下內(nèi)容:
extension = amqp.so
重啟php-fpm,查看是否安裝成功:
[root@VM-0-12-centos sockets]# php -m
[PHP Modules]
amqp
bcmath
Core
ctype
...
Windows 系統(tǒng)下 sockets 擴展是默認關(guān)閉的,但是Linux下 sockets 擴展是開啟的,查看是否啟用:
[root@VM-0-12-centos sockets]# php -m
[PHP Modules]
amqp
bcmath
Core
ctype
curl
date
dom
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
SPL
sqlite3
standard
sysvsem
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
xsl
zip
zlib
[Zend Modules]
[root@VM-0-12-centos sockets]#
③、composer安裝rabbitmq
root@VM-0-12-centos ~]# cd /home/wwwroot/laravel/
[root@VM-0-12-centos laravel]# composer require vladimir-yuldashev/laravel-queue-rabbitmq
Cannot use vladimir-yuldashev/laravel-queue-rabbitmq's latest version v13.3.0 as it requires php ^8.0 which is not satisfied by your platform.
./composer.json has been updated
Running composer update vladimir-yuldashev/laravel-queue-rabbitmq
Loading composer repositories with package information
Updating dependencies
Lock file operations: 5 installs, 0 updates, 0 removals
- Locking paragonie/constant_time_encoding (v2.6.3)
- Locking paragonie/random_compat (v9.99.100)
- Locking php-amqplib/php-amqplib (v3.5.2)
- Locking phpseclib/phpseclib (3.0.19)
- Locking vladimir-yuldashev/laravel-queue-rabbitmq (v11.3.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 5 installs, 0 updates, 0 removals
- Installing paragonie/random_compat (v9.99.100): Extracting archive
- Installing paragonie/constant_time_encoding (v2.6.3): Extracting archive
- Installing phpseclib/phpseclib (3.0.19): Extracting archive
- Installing php-amqplib/php-amqplib (v3.5.2): Extracting archive
- Installing vladimir-yuldashev/laravel-queue-rabbitmq (v11.3.0): Extracting archive
4 package suggestions were added by new dependencies, use `composer suggest` to see details.
Package fruitcake/laravel-cors is abandoned, you should avoid using it. No replacement was suggested.
Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fruitcake/laravel-cors
Discovered Package: laravel/sail
Discovered Package: laravel/sanctum
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Discovered Package: vladimir-yuldashev/laravel-queue-rabbitmq
Package manifest generated successfully.
78 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan vendor:publish --tag=laravel-assets --ansi --force
No publishable resources for tag [laravel-assets].
Publishing complete.
No security vulnerability advisories found
Using version ^11.3 for vladimir-yuldashev/laravel-queue-rabbitmq
[root@VM-0-12-centos laravel]#
⑵、Windows安裝擴展
①、安裝amqp擴展
根據(jù)我的環(huán)境是 php7.3,選擇的是64位NON Thread Safe(TS),不知道選擇TS 還是 NTS的下面。
TS和NTS
TS指Thread Safety,即線程安全,一般在IIS以ISAPI方式加載的時候選擇這個版本。NTS即None-Thread Safe,一般以fast cgi方式運行的時候選擇這個版本,具有更好的性能。
???????從2000年10月20日發(fā)布的第一個Windows版的PHP3.0.17開始的都是線程安全的版本,這是由于與Linux/Unix系統(tǒng)是采用多進程的工作方式不同的是Windows系統(tǒng)是采用多線程的工作方式。如果在IIS下以CGI方式運行PHP會非常慢,這是由于CGI模式是建立在多進程的基礎(chǔ)之上的,而非多線程。一般我們會把PHP配置成以ISAPI的方式來運行,ISAPI是多線程的方式,這樣就快多了。但存在一個問題,很多常用的PHP擴展是以Linux/Unix的多進程思想來開發(fā)的,這些擴展在ISAPI的方式運行時就會出錯搞垮IIS。因此在IIS下CGI模式才是 PHP運行的最安全方式,但CGI模式對于每個HTTP請求都需要重新加載和卸載整個PHP環(huán)境,其消耗是巨大的。
???????為了兼顧IIS下PHP的效率和安全,微軟給出了FastCGI的解決方案。FastCGI可以讓PHP的進程重復利用而不是每一個新的請求就重開一個進程。同時FastCGI也可以允許幾個進程同時執(zhí)行。這樣既解決了CGI進程模式消耗太大的問題,又利用上了CGI進程模式不存在線程安全問題的優(yōu)勢。 ???????因此,如果是使用ISAPI的方式來運行PHP就必須用Thread Safe(線程安全)的版本;而用FastCGI模式運行PHP的話就沒有必要用線程安全檢查了,用None Thread Safe(NTS,非線程安全)的版本能夠更好的提高效率。
下載解壓后如下: 打開自己的php安裝目錄,因為我用的是phpstudy,安裝了多個PHP環(huán)境,這里我以php7.3.4為例:
Admin@DESKTOP-CSH3FGN MINGW64 ~/Desktop
$ php -v
PHP 7.3.4 (cli) (built: Apr 2 2019 21:57:22) ( NTS MSVC15 (Visual C++ 2017) x64
)
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
with Xdebug v2.9.6, Copyright (c) 2002-2020, by Derick Rethans
Admin@DESKTOP-CSH3FGN MINGW64 ~/Desktop
$
接下來需要把解壓后的 php_amqp.dll 和 rabbitmq.4.dll,放到對應(yīng)的目錄:
php_amqp.dll 放到 E:\phpstudy_pro\Extensions\php\php7.3.4nts\ext 目錄下; rabbitmq.4.dll 放到 php.exe 同級目錄,即 E:\phpstudy_pro\Extensions\php\php7.3.4nts; php.ini 配置文件中添加擴展 extension=php_amqp.dll,并重啟php: phpinfo查看是否安裝成功:
②、啟用sockets擴展
除了amqp 擴展,還需要啟用 sockets 擴展,這個php自帶的但是沒有啟用,刪除配置文件的注釋重啟php就好;
重啟PHP。
③、composer安裝rabbitmq
方式一:
composer require vladimir-yuldashev/laravel-queue-rabbitmq
方式二:
"require": {
"vladimir-yuldashev/laravel-queue-rabbitmq": "^11.3"
},
composer install
E:\work\laravel>composer require vladimir-yuldashev/laravel-queue-rabbitmq
Using version ^11.3 for vladimir-yuldashev/laravel-queue-rabbitmq
./composer.json has been updated
Running composer update vladimir-yuldashev/laravel-queue-rabbitmq
Loading composer repositories with package information
Updating dependencies
Lock file operations: 5 installs, 0 updates, 0 removals
- Locking paragonie/constant_time_encoding (v2.6.3)
- Locking paragonie/random_compat (v9.99.100)
- Locking php-amqplib/php-amqplib (v3.5.2)
- Locking phpseclib/phpseclib (3.0.19)
- Locking vladimir-yuldashev/laravel-queue-rabbitmq (v11.3.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 5 installs, 0 updates, 0 removals
- Downloading paragonie/random_compat (v9.99.100)
- Downloading paragonie/constant_time_encoding (v2.6.3)
- Downloading phpseclib/phpseclib (3.0.19)
- Downloading php-amqplib/php-amqplib (v3.5.2)
- Downloading vladimir-yuldashev/laravel-queue-rabbitmq (v11.3.0)
- Installing paragonie/random_compat (v9.99.100): Extracting archive
- Installing paragonie/constant_time_encoding (v2.6.3): Extracting archive
- Installing phpseclib/phpseclib (3.0.19): Extracting archive
- Installing php-amqplib/php-amqplib (v3.5.2): Extracting archive
- Installing vladimir-yuldashev/laravel-queue-rabbitmq (v11.3.0): Extracting archive
5 package suggestions were added by new dependencies, use `composer suggest` to see details.
Package fruitcake/laravel-cors is abandoned, you should avoid using it. No replacement was suggested.
Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fruitcake/laravel-cors
Discovered Package: laravel/sail
Discovered Package: laravel/sanctum
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Discovered Package: vladimir-yuldashev/laravel-queue-rabbitmq
Package manifest generated successfully.
77 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan vendor:publish --tag=laravel-assets --ansi --force
No publishable resources for tag [laravel-assets].
Publishing complete.
E:\work\laravel>
⑶、rabbitmq連接測試
參考:Hello World。
①、創(chuàng)建composer.json文件
composer.json 內(nèi)容:
{
"require": {
"php-amqplib/php-amqplib": "2.6.1"
}
}
加載依賴:
composer install
②、創(chuàng)建send.php、receive.php
send.php 內(nèi)容:
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
$channel->queue_declare('hello', false, false, false, false);
$msg = new AMQPMessage('Hello World!');
$channel->basic_publish($msg, '', 'hello');
echo " [x] Sent 'Hello World!'\n";
$channel->close();
$connection->close();
?>
receive.php 內(nèi)容:
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
$channel->queue_declare('hello', false, false, false, false);
echo " [*] Waiting for messages. To exit press CTRL+C\n";
$callback = function ($msg) {
echo ' [x] Received ', $msg->body, "\n";
};
$channel->basic_consume('hello', '', false, true, false, false, $callback);
while ($channel->callbacks) {
$channel->wait();
}
$channel->close();
$connection->close();
?>
③、測試
發(fā)送: 接收:
至此安裝成功,接下來就開始繼續(xù)學習rabbitmq的更多用法。
柚子快報激活碼778899分享:php RabbitMQ 安裝
精彩鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。