MQ解耦了生産者和消費者,前提是有一個穩定強大的消息服務,我們隻管與之通信即可。
是以,和MqServer通信是什麼樣的?難否?
0. 發送端demo
隻需要設定下 nameServer, 就可以實作發送mq消息了。簡單易用,是好産品的必備特征。
具體實作過程,且讓我們深入一點了解。
1:消息發送主流程
網絡請求通信細節,視情況檢視。
2. 更新發送路由資訊
從nameserver擷取原始資訊,然後緩存到本地。可以保證拿到準确資料的同時,保證了高性能。
3. 選擇一個隊列,用戶端負載均衡
基本就是一個輪詢政策了。
4. 查找 broker
在一組 broker 主從中,隻選擇主節點進行發送消息。
總結一下發送過程:
1. 資料檢驗,topic格式,消息體大小等;
2. 查找queueId, 使用一定的負載均衡測試;
3. 查找 broker, 發送消息;
4. 等待響應或者重試;
5. 所有topic,route資訊都可以namesrv擷取;
5. producer 的啟動環境準備
以上的過程式,是進行發發送消息的過程,最終都是基于 netty 建立的通道進行傳送的,那麼這些通道都是什麼時候準備好的呢?其實是 producer.start();
MQClientManager 是個重要的類,它包含了用戶端和nameserver,broker連接配接的建立,維護線程的建立等等。
啟動時主要完成的任務有:準備好網絡連接配接的環境基于netty, 建立生産者消費者線程池,開啟各背景任務異步線程。然後可以準備發送消息。
以上,這可能是水軍。自己領悟才是硬道理。