前面博文已經將安裝配置和站點管理介紹了,現在開始正式學習rabbitmq的使用了;
rabbitmq作為訊息佇列,一條訊息從發布到訂閱消費的完整流程為:
訊息 --> 交換機exchange ---> 佇列queue ---> 消費者
rabbitmq的核心就在交換機和佇列
發布者(推送訊息的一端):
建立乙個tcp長連線connection,連線rabbitmq的監聽埠5672;
在tcp長連線下建立乙個通道channel,通道可以理解為connection的乙個分支;
通過通道向rabbitmq宣告乙個交換機exchange,設定交換機的型別,名稱,是否持久化等屬性;
通過通道向rabbitmq宣告乙個佇列queue,設定佇列的名稱,是否持久化等引數;
通過通道向rabbitmq宣告乙個繫結binding,設定繫結的交換機名稱,佇列名稱,繫結的路由鍵;
通過通道向rabbitmq推送一條訊息,指定交換機和路由;
消費者(接收訊息的一端):
從第一步到第四步和發布者做的事情是一模一樣的,如果已經存在相應的exchange、queue等則跳過;
通過通道向rabbitmq宣告乙個訂閱,訂閱特定的queue,並且設定**函式及是否確認等;
通過通道監聽rabbitmq推送過來的訊息;
宣告交換機時的重要屬性:
name:名稱,必須唯一;
type:型別,共有四種,預設direct;
durability:是否持久化,預設否;
auto delete:是否自動刪除;
internal:是否是內部交換機,預設否;
arguments:設定額外的引數;
直連交換機direct
扇形交換機funout
主題交換機topic
路由鍵規則:
user.* 用來匹配所有繫結了以user開頭並且使用了兩個單詞的路由鍵;
user.# 用來匹配所有繫結了以user開頭並且使用了乙個以上單詞的所有路由鍵;
頭交換機headers
注意
注意:
原 PHP核心函式研究之 global
宣告 本文為斯人原創,全部為作者一一分析得之,有不對的地方望賜教。好久沒有寫部落格了 最近事挺多,換了工作,又搬了家.今天就來說說 我們經常用到的global語句吧.我們都知道,在函式體內宣告的變數,作用域只是當前函式體中,一般情況下是訪問不到外部宣告的變數的.因為全域性變數和區域性變數存放在不同的...
更新 繫結資料 MVVM 雙向資料繫結之核心原理
1 概述 2 mvvm,model view viewmodel 3 雙向資料繫結 4 監聽 dom 改變 5 監聽模型資料變化,資料劫持 6 觀察者模式,observer js 幾個流行的框架 vuejs ember.js angularjs 都使用 mvvm 模式,該模式叫做檢視模型雙向資料繫結...
核心同步之Seq鎖和屏障
5.完成變數 如果在核心中乙個任務需要發出訊號通知另乙個任務發生了某個特定事件,利用完成變數 completion variable 是兩個任務得以同步的簡單方法。完成變數由結構completion表示,在中。靜態初始化 declare copletion my comp 執行時動態初始化 int ...