【PHP進階】Rabbitmq的實際使用

RabbitMQ是一個流行的消息隊列中間件,它提供了可靠的消息傳遞機制。在使用RabbitMQ時,有幾個重要的概念需要了解:

消息隊列(Message Queue):RabbitMQ中的核心概念之一。它是消息的緩沖區,用于存儲發送者發送的消息,以便等待接收者處理。

消息生產者(Producer):負責向消息隊列中發送消息的應用程序或組件。

消息消費者(Consumer):從消息隊列中接收并處理消息的應用程序或組件。

交換機(Exchange):用于將消息路由到一個或多個消息隊列的組件。交換機根據規則(如路由鍵)將消息發送到相應的隊列。

隊列綁定(Queue Binding):將隊列與交換機關聯的過程。綁定定義了交換機如何將消息路由到與之綁定的隊列。

路由鍵(Routing Key):用于將消息從交換機路由到特定隊列的關鍵字。交換機根據消息的路由鍵將消息發送到一個或多個與之匹配的隊列。

確認(Acknowledgment):指消費者收到消息并已確認處理完成的機制。RabbitMQ支持確認機制,確保消息被正確地處理。

持久化(Durability):指消息隊列和消息是否持久化存儲到磁盤上,以防止消息丟失。持久化確保在RabbitMQ服務器重啟時不會丟失消息。

PHP實際運用:

我們來創建一個簡單的 PHP 實例來使用 RabbitMQ。首先,你需要確保已經安裝了 RabbitMQ 服務器,并且在 PHP 中安裝了 RabbitMQ 擴展。然后,我們將創建一個簡單的生產者和消費者來發送和接收消息。

步驟 1: 安裝 RabbitMQ PHP 擴展

你可以使用 pecl 來安裝 RabbitMQ PHP 擴展:

pecl install amqp

步驟 2: 編寫生產者

<?php
require_once __DIR__ . '/vendor/autoload.php'; // 載入 Composer 自動加載器use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;// 連接到 RabbitMQ 服務器
$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();
?>

步驟 3: 編寫消費者

<?php
require_once __DIR__ . '/vendor/autoload.php'; // 載入 Composer 自動加載器use PhpAmqpLib\Connection\AMQPStreamConnection;// 連接到 RabbitMQ 服務器
$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->is_consuming()) {$channel->wait();
}// 關閉連接
$channel->close();
$connection->close();
?>

這就是一個簡單的 RabbitMQ 示例。生產者發送消息到名為 “hello” 的隊列,而消費者監聽這個隊列并打印出收到的消息.

我們基于這些基礎代碼就能做業務啦。不同的業務會有些許差別。

本文由mdnice多平臺發布

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/710669.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/710669.shtml
英文地址,請注明出處:http://en.pswp.cn/news/710669.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

容器安全工具使用指南:保障容器環境安全的利器

隨著容器技術的廣泛應用,容器安全成為關注的焦點。本文將深入介紹幾個流行的容器安全工具,我們將深入了解容器安全領域的Top 10工具,包括Trivy、veinmind-tools、Clair、Docker Bench for Security、Sysdig Falco、neuVector等,詳細講解它們的功能、原理、安裝和使用方法,…

【精簡版】Ubuntu/Linux Anaconda 命令行終端安裝

網上重復內容很多&#xff0c;大都啰里啰嗦&#xff0c;特作此筆記。 【精簡版】Ubuntu/Linux Anaconda 命令行安裝 1 下載安裝包1.1 尋找適配版本安裝包1.2 下載 2 運行安裝程序3 設置安裝路徑4 添加環境變量并運行4.1 環境變量4.2 運行 5 驗證安裝成功感謝及參考博文 1 下載…

js ES6判斷字符串是否以某個字符串開頭或者結尾startsWith、endsWith

1.前言 startsWith&#xff1a;startsWith方法用于檢查字符串是否以指定的字符串開頭。 endsWith&#xff1a;endsWith方法用于檢查字符串是否以指定的字符串結尾。 2.用法示例 const str Hello, world!;console.log(str.startsWith(Hello)); // true console.log(str.starts…

音頻提取使用什么方法?視頻提取音頻

在數字技術與多媒體日益普及的今天&#xff0c;音頻提取已成為一個常見且重要的任務。無論是為了制作視頻、編輯音樂&#xff0c;還是進行語音識別和分析&#xff0c;我們都需要從原始材料中提取音頻。那么&#xff0c;音頻提取通常使用什么方法呢&#xff1f; 1. 使用專業的音…

【Git教程】(七)變基與揀取 —— 變基操作的概念、適用場景及其實現方式,揀取操作的實現 ~

Git教程 變基與揀取 1?? 工作原理&#xff1a;復制提交2?? 避免“鉆石鏈”3?? 什么情況下會遇到沖突4?? 移植分支5?? 執行變基后原提交的情況6?? 提交的原件與副本存在于同一版本庫中所帶來的問題7?? 撿取&#x1f33e; 總結 通常&#xff0c; 一段提交歷史中往…

編寫科技項目驗收測試報告需要注意什么?第三方驗收測試多少錢?

科技項目驗收測試是一個非常重要的環節&#xff0c;它對于確保科技項目的質量和可用性起著至關重要的作用。在項目完成后&#xff0c;進行科技項目驗收測試可以評估項目的功能、性能和可靠性等方面&#xff0c;并生成科技項目驗收測試報告&#xff0c;以提供給項目的相關方參考…

第十六屆“中關村青聯杯”全國研究生數學建模競賽-E題:全球變暖氣候預測分析(續)

目錄 五、問題二:模型的建立與求解 5.1 問題分析 5.2 數據獲取及處理 5.2.1 數據獲取

git commit 的規范

今天在一個項目中提交git時報了下面的錯誤&#xff1a;subject may not be empty [subject-empty] type may not be empty [type-empty]&#xff0c;上網查閱了一些資料&#xff0c;發現這種一種規范約束&#xff0c;用下面的命令我又重新提交了一次 git commit -m "feat…

SpringFramework實戰指南(七)

SpringFramework實戰指南(七) 4.5 三種配置方式總結4.5.1 XML方式配置總結4.5.2 XML+注解方式配置總結4.5.3 完全注解方式配置總結4.6 整合Spring5-Test5搭建測試環境4.5 三種配置方式總結 4.5.1 XML方式配置總結 所有內容寫到xml格式配置文件中聲明bean通過<bean標簽<…

Docker技術概論(2):Docker環境的搭建

Docker技術概論&#xff08;2&#xff09; Docker環境的搭建 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blo…

自動采集API壁紙系統源碼自適應手機端

HTML5響應式自動采集API壁紙系統源碼自適應手機端 瀑布流加載 源碼下載&#xff1a;https://www.qqmu.com/2303.html

InnoDB備份與恢復篇(1)-InnoDB的備份與還原策略

InnoDB數據庫的備份與還原策略 MySQL是一種廣泛使用的關系型數據庫管理系統&#xff0c;而InnoDB是MySQL的默認存儲引擎之一。在生產環境中&#xff0c;對于數據庫的備份和還原至關重要&#xff0c;以確保數據的安全性和可靠性。本文將介紹MySQL數據庫InnoDB引擎的備份與還原策…

七、有序的列表

描述 創建一個依次包含字符串P、y、t、h、o和n的列表my_list&#xff0c;先使用sorted函數對列表my_list進行臨時排序&#xff0c;第一行輸出排序后的完整列表&#xff0c;第二行輸出原始的列表。再使用sort函數對列表my_list進行降序排序&#xff0c;第三行輸出排序后完整的列…

yolov8漲點技巧,添加SwinTransformer注意力機制,提升目標檢測效果

目錄 摘要 SwinTransformer原理 代碼實現 YOLOv8詳細添加步驟 ymal文件內容 one_swinTrans three_swinTrans 啟動命令 完整代碼分享 摘要 Swin Transformer通過引入創新的分層注意力機制展現了其架構的獨特性&#xff0c;該機制通過將注意力區域劃分為塊并在這些塊內執…

小白的matlab簡單應用

基本概念 1、數組array 數組是一個更通用的數據結構&#xff0c;可以是一維、二維或多維的。 一維數組通常被稱為向量。 二維數組可以被視為矩陣。 多維數組可以用來表示更高維度的數據&#xff0c;例如三維數組可以表示一系列的矩陣。 用過的函數 20240229 1、讀取excel文件…

python_pyecharts_堆積圖

from pyecharts.charts import Bar from pyecharts import options as opts # 構建數據 x_data ["A", "B", "C", "D", "E"] y_data [10, 20, 30, 40, 50] z_data [5, 15, 25, 35, 45] # 創建堆積柱狀圖Bar實例 bar Bar(…

進階了解C++(4)——多態

在上篇文章中&#xff0c;簡單的介紹了多態中的概念以及其相關原理。本文將針對多態中其他的概念進一步進行介紹&#xff0c;并且更加深入的介紹關于多態的相關原理。 目錄 1. 抽象類&#xff1a; 2. 再談虛表&#xff1a; 3. 多繼承中的虛函數表&#xff1a; 1. 抽象類&am…

MySQL 用戶賬號遷移

文章目錄 前言1. 工具安裝1.1 下載安裝包1.2 編譯安裝 2. 用戶遷移后記 前言 有一個典型的使用場景&#xff0c;就是 RDS 下云大多數都是通過 DTS 進行數據傳輸的&#xff0c;用戶是不會同步到自建數據庫的。需要運維人員在自建數據庫重新創建用戶&#xff0c;如果用戶數量很多…

基于springboot+vue的在線考試與學習交流平臺

博主主頁&#xff1a;貓頭鷹源碼 博主簡介&#xff1a;Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰&#xff0c;歡迎高校老師\講師\同行交流合作 ?主要內容&#xff1a;畢業設計(Javaweb項目|小程序|Pyt…

中小型水庫安全監測運營解決方案,筑牢水庫安全防線

我國水庫大壩具有“六多”的特點。第一&#xff0c;總量多。我國現有水庫9.8萬座&#xff0c;是世界上水庫大壩最多的國家。第二&#xff0c;小水庫多。我國現有水庫中95%的水庫是小型水庫。第三&#xff0c;病險水庫多。 目前&#xff0c;在我國水庫管理中&#xff0c;部分地方…