1、介紹AMQP協議服務器
特性:
1:分佈式事務支持。
2:消息的持久化支持。
3:高性能和高可靠的消息處理優點。app
分發策略:
1: 輪詢分發
2: 公平分發分佈式
AMQP消息路由必須的三部分:交換器、路由、綁定
性能
消費者從隊列中接收消息:spa
注意:日誌
對個消費者共用同一隊列 ,消息的消費流程循環消費,cosumerA,cosumerB。server
一、 messageA 到達隊列先 給conusumerA ,在consumerA中確認了接收了messageA消息,RabbiMQ將messageA從隊列中刪除
二、message發送給consumerB ranhou....
問題一:consumerA沒有確認消息會怎麼樣?rabbitmq
messageA會發送給下一個消費者,從而保證消息被消費,若是consumerA沒有確認消息,隊列將不會發送消息給消費者A,能夠利用這點來控制消費時長。
問題二:使用什麼方式拒絕處理該條消息?隊列
一、把消費者從rabbiMq斷開(會增長對RabbitMQ的負荷) 二、RabbitMq2.0.0及以上版本可使用AMQP的basic.reject命令。把reject命令的requeue 值設爲true則將消息發送到下一個message,false則是移除該消息。
名詞介紹:圖片
2、交換器和綁定
交換器經過路由鍵來分發消息到不一樣隊列:一共有4中類型交換器 direct、famous、topic、headers(headers交換器容許你匹配Amqp消息的header而非路由鍵)
服務器必須實現direct類型交換器,包含一個空白字符串的默認交換器。隊列的名稱就是路由鍵
3.topic交換器:經過通配符匹配消息,使得不一樣源頭的消息到達同一隊列
3、虛擬主機
每個vhost本質上是一個mini版的RabbitMq服務器,擁有本身的隊列、交換器和綁定。擋在Rabbitmq集羣中建立了一個mq則整個集羣中都會建立這個vhost。
四、消息持久化和策略
五、使用Rabbitmq的大體流程
RabbitMq是運行在Erlang上的
一、啓動結點 ./sbin/rabbitmq -server
二、關閉結點 ./sbin/rabbitmqctl stop 只關閉rabbitmq ./rabbitmqctl stop_app
三、Rabbitmq日誌:LOG_BASE = /var/log/rabbitmq
會建立兩個日誌文件RABBITMQ_NODENAME-sasl.log 和RABBITMQ_NODENAME.log
文章參考書籍:《Rabbimq實戰 高效部署分佈式消息隊列》