rabbitMq使用心得

基礎

producer broker vhost exchange queen customer

  1. 路由:更靈活,
  2. 權限管理
  3. 高可用隊列
  4. TTL:

 

  1. direct 直連模式  即:==
  2. topic  # *:通配符 主題模式  即:like
  •   * 僅代表一個單詞 
  •    # 代表任意個單詞 
  1. 廣播
基於AMQP:高級消息隊列協議,是一個工作於應用層的協議
 
 
 

環境:springboot

監聽消息
@RabbitListener(bindings = {@QueueBinding(value = @Queue(value = OmsConstantsUtil.QUEEN_OMS_CALLBACK), exchange = @Exchange(value = OmsConstantsUtil.EXCHANGE_OMS_CALLBACK), key = OmsConstantsUtil.KEY_OMS_CALLBACK)})

 發佈消息:

@Autowired
private RabbitTemplate rabbitTemplate;

rabbitTemplate.convertAndSend(OmsConstantsUtil.EXCHANGE_OMS_CALLBACK, OmsConstantsUtil.KEY_OMS_CALLBACK, message);

高級應用:
  1. 延時隊列  (削峯)
  2. 死信隊列  : 可以實現延時隊列

            比如:消息超時,消息被消費者拒絕並且未設置重回隊列隊列達到最大長度,超過了 Max length

       

可靠性投遞經驗

  發送端:服務端確認接收機制

    事務模式:但吞吐量太低,同步阻塞模式

   單條確認模式:

   批量確認模式:先發送,再確認  有風險

     邊發送,邊確認

  路由保證:

     路由到隊列

   消費者消費環節:

     自動ACK

       接收到信息,就發送ACK

    手動ACK

      

問題:

channel:減少TCP連接,類似 連接池
Vhost:分區,例如:local dev
無法被路由的消息:直接丟棄

如何發給多個服務器消息
  定義多個connectionfactory template listenerContainer

如何實現延遲隊列
  TTL + 死信隊列
   plugin插件
 
 如何提高消費速度
    增加消費者
    
  動態增加消費者

      container
     
   保證消息的順序性
       一個隊列只有一個消費者
       
大量消息堆積
   

MQ選型維度
  1、使用 管理
  2、 性能 併發 吞吐 消息堆積
   3、功能
4、可用  持久化 集羣   

如何設計MQ
   首先 存儲、轉發 通信協議 推或拉  等功能性需求
   其次:高可用  等非功能需求

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章