1.a關注b,b傳送一條動態,a要能收到推送,或者要朋友圈有顯示
2.併發寫資料庫的時候 ,可以先放mq佇列,然後再寫資料(比如遊戲),同時使用多執行緒
3.其實很多地方都可以用訊息佇列,只要你想用基本都能用上,就看需不需要,如果是指普通的小使用者量,只需要直接請乙個新的執行緒跑就可以了
4.還有就是日誌收集的時候,可以用多個執行緒去跑,寫到mq,然後再從mq取出來持久化到(資料庫或者別的地方)
mq裡面沒有任何業務,只負責傳遞乙個map物件(裡面包含需要的引數)
接收方收到後,從map中取資料,然後做業務,如下圖,是mq的一例項:
服務方是乙個工程,接收方是另外乙個工程。這樣實現了生產者和消費者模式,實現了解耦
消費者只需要實現mq的監聽者介面messagelistener,重寫onmessage()方法既可
而且mq可以把訊息持久化,能斷點續傳。。。。
mq的安裝和新增使用者
示例裡沒有一點兒和持久化相關的東東,而這卻是筆者最關心的,想想作為訊息伺服器如果不能保證訊息一定被接收到,算什麼事兒啊?比著網上狂轉的python版本從php-amqp的庫里一點一點兒翻,找到了如下持久化的設定:
接收端宣告佇列和交換機自動建立:
$ch->queue_declare($_queue,false,true,false,false);
第三個引數設定true保證伺服器重啟後,自動建立佇列
第五個引數設定成false防止接收端沒連線的時候丟失訊息
$ch->exchange_declare($exchange, 'direct', false, true, false);
第四個引數設定true保證重啟後,自動建立交換機
第五個引數設定false防止接收端斷開後,交換機被刪除
參看上中生產者,裡面channel的配置引數,與上面這個對應
rabbitmq 應用場景
rabbitmq,或者說amqp解決了什麼問題,或者說它的應用場景是什麼?對於乙個大型的軟體系統來說,它會有很多的元件或者說模組或者說子系統或者 subsystem or component or submodule 那麼這些模組的如何通訊?這和傳統的ipc有很大的區別。傳統的ipc很多都是在單一系...
RabbitMQ應用場景
在大多數應用中,可通過訊息服務中介軟體來提公升系統非同步通訊,擴充套件解耦能力。比如,非同步處理 以使用者註冊為例 首先將使用者的註冊資訊寫入資料庫,然後給使用者傳送郵件,並且發一封簡訊。第一種方法 按照以前的同步方式,寫入資料庫調發郵件方法,發完郵件調發簡訊方法,每個需要50毫秒,算上寫入資料庫,...
RabbitMQ的應用場景
1.非同步處理 使用者註冊後,需要發註冊郵件和註冊簡訊,傳統的方式 序列和並行。序列 使用者註冊資訊寫入資料庫 傳送郵件 傳送簡訊 註冊成功,使用者使用 並行 使用者註冊資訊寫入資料庫 傳送郵件 傳送簡訊 註冊成功,使用者使用 因為郵件和簡訊並不是註冊所必需的,即使不接收郵件和簡訊,使用者也可以進行...