php 消息中间件,简单说说消息中间件RabbitMQ(上)
MQ,消息隊列,消息以管道的方式進行傳遞。其就像個“快遞員”,將消息從生產者送到消費者處。RabbitMQ是消息隊列中的一種。
消息隊列適用于異步返回執行時間長,且消息發送者不多關注執行結果的情形。
中間件是將具體業務和底層邏輯解耦的軟件,分為:MOM(消息中間件)、RPC(遠程過程調用中間件)、UDA(數據訪問中間件)、TPM(交易中間件)等。
消息中間件,又稱為消息隊列、消息隊列中間件,分為RabbitMQ、ActiveMQ、Kafka等。
各部分的名字和作用?
1.Brocker:消息隊列服務器實體,Rabbitmq可以作為一個選擇。
2.Exchange:消息交換機,用于接收、分配消息。指定消息按什么規則,路由到哪個隊列。
3.Queue:消息隊列,用于存儲生產者的消息。每個消息都會被投入到一個或者多個隊列里。
4.Binding Key:綁定關鍵字,用于把交換器的消息綁定到隊列中,它的作用是把exchange和queue按照路由規則binding起來。
5.Routing Key:路由關鍵字,用于把生產者的數據分配到交換器上。exchange根據這個關鍵字進行消息投遞。
6.Vhost:虛擬主機,一個broker里可以開設多個vhost,用作不用用戶的權限分離。
7.Producer:消息生產者,就是投遞消息的程序。
8.Consumer:消息消費者,就是接受消息的程序。
9.Channel:信道,消息推送使用的通道。可建立多個channel,每個channel代表一個會話任務。
使用流程?
1.消息接收客戶端連接到消息隊列服務器,打開一個channel。
2.客戶端聲明一個exchange,并設置相關屬性。
3.客戶端聲明一個queue,并設置相關屬性。
4.客戶端使用routing key,在exchange和queue之間建立好綁定關系。
5.消息發布客戶端投遞消息到exchange。
6.exchange接收到消息后,就根據消息的key和已經設置的binding,進行消息路由,將消息投遞到一個或多個隊列里。
總結起來就是:生產者發送一條消息給交換機——交換機根據關鍵字匹配到對應的隊列——將消息存入隊列——消費者從隊列中取出消息使用。
我們的項目為什么要選擇RabbitMQ,而不選擇別的消息中間件?
1.除了Qpid,RabbitMQ是唯一一個實現了AMQP標準的消息服務器;
2.可靠性,RabbitMQ的持久化支持,保證了消息的穩定性;
3.高并發,RabbitMQ使用了Erlang開發語言,Erlang是為電話交換機開發的語言,天生自帶高并發光環,和高可用特性;
4.集群部署簡單,正是因為Erlang使得RabbitMQ集群部署變的超級簡單;
5.社區活躍度高,根據網上資料來看,RabbitMQ也是首選;
2.工作隊列模式:一個生產者產生的消息可以供多個消費者消費,但是一個消息只能被其中一個消費者消費。
3.發布/訂閱模式:多了一個交換機,生產者將消息發送到交換機上,交換機發送消息給各個隊列,此時,一個消息可以被多個消費者獲取。
值得一提的是,這又叫廣播模式,是最常用的模式了,在ITOO中使用的就是這種模式。
4.路由模式:又多了一個routing key,生產者發送消息帶有routingkey,消費者選擇自己需要的消息進行消費,也配置一個routing key。
5.主題模式:又多了一個通配符,這樣消費端如果需要好幾種消息的時候,不用一個一個的設置,直接用通配符可以接收自己想要的各種消息。
6.RPC:c對s說“我這有個任務需要你的幫助”,s處理完后,將結果返回給c。
總結
以上是生活随笔為你收集整理的php 消息中间件,简单说说消息中间件RabbitMQ(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue-lazyload 图片懒加载
- 下一篇: 二进制转十六进制vb6程序