本地RocketMQ的安裝與調試

本地RocketMQ的安裝與調試apache

標籤:【RocketMQ】服務器

1. 啓動

  1. 進入RocketMQ-ALL的源碼項目。
  2. 執行maven打包:架構

    mvn -Prelease-all -DskipTests clean install -U
  3. 進入打包好的文件異步

    cd /Users/rtw/IdeaProjects/RocketMQ/distribution/target/apache-rocketmq/bin
  4. 進入distribution/conf. 將其中的broker.conf 、 logback_broker.xml、logback_namesrv.xml複製到rocketmq_all/conf下。
  5. 修改broker.conf 的配置:maven

    brokerClusterName = DefaultCluster
    brokerName = broker-a
    brokerId = 0
    deleteWhen = 04
    fileReservedTime = 48
    brokerRole = ASYNC_MASTER
    flushDiskType = ASYNC_FLUSH
    namesrvAddr=127.0.0.1:9876
    #存儲路徑
    storePathRootDir=/Users/rtw/IdeaProjects/RocketMQ/store
    #commitLog 存儲路徑
    storePathCommitLog=/Users/rtw/IdeaProjects/RocketMQ/store/commitlog
    #消費隊列存儲路徑存儲路徑
    storePathConsumeQueue=/Users/rtw/IdeaProjects/RocketMQ/store/consumequeue
    #消息索引存儲路徑
    storePathIndex=/Users/rtw/IdeaProjects/RocketMQ/store/index
    #checkpoint 文件存儲路徑
    storeCheckpoint=/Users/rtw/IdeaProjects/RocketMQ/store/checkpoint
    #Broker 的角色
    #- ASYNC_MASTER 異步複製Master
    #- SYNC_MASTER 同步雙寫Master
    #- SLAVE brokerRole=ASYNC_MASTER
    #刷盤方式
    #- ASYNC_FLUSH 異步刷盤
    #- SYNC_FLUSH 同步刷盤 flushDiskType=ASYNC_FLUSH
    #checkTransactionMessageEnable=false
    #abort 文件存儲路徑
    abortFile=/Users/rtw/IdeaProjects/RocketMQ/store/abort
  6. 運行org.apache.rocketmq.namesrv.NamesrvStartup,須要進行配置:性能

    • 添加Environment variables: ROCKETMQ_HOME=/Users/rtw/IdeaProjects/RocketMQ
  7. 運行org.apache.rocketmq.broker.BrokerStartup,須要進行配置:ui

    • 添加Environment variables: ROCKETMQ_HOME=/Users/rtw/IdeaProjects/RocketMQ
    • 配置Program arguments,也就是項目的broker.conf的位置:
    -c /Users/rtw/IdeaProjects/RocketMQ/conf/broker.conf
  8. 日誌位置見RocketMQ/conf/logback_broker.xml.
  9. 運行org.apache.rocketmq.example.quickstart.Producer建立消息,注意須要添加producer.setNamesrvAddr("127.0.0.1:9876");
  10. 運行org.apache.rocketmq.example.quickstart.Consumer消費消息,注意添加consumer.setNamesrvAddr("127.0.0.1:9876");

2. RocketMQ

  1. RocketMQ是一款高性能消息中間件,其核心的優點:設計

    • 可靠的消息存儲。
    • 消息發送的高性能與低延遲。
    • 強大的消息堆積能力與消息處理能力。
    • 嚴格的順序消息存儲。
    • 懂得取捨,消息中間件的理想狀態是一條消息能且只被消費一次,但要作到這一點必然須要犧牲性能。RocketMQ保證消息至少被消費一次,但不承諾消息不會被消費者屢次消費。其消息的冪等由消費者本身實現

2.1 設計理念

  1. 使用NameServer,摒棄了業內經常使用的Zookeeper充當信息管理的「註冊中心」。調試

    • 由於Topic路由信息無須在集羣之間保持強一致性,追求最終一致性,而且能容忍分鐘級的不一致。
  2. 高效的IO存儲機制。
  3. 容忍設計缺陷,RocketMQ保證消息至少被消費一次,但不承諾消息不會被消費者屢次消費。其消息的冪等由消費者本身實現。

2.2 設計目標

RocketMQ做爲一款消息中間件,須要解決以下問題:日誌

  1. 架構模式:

    • RocketMQ與大部分消息中間件同樣,採用發佈訂閱模式,基本的參與組件主要包括:消息發送者、消息服務器(消息存儲)、消息消費、路由發現。
  2. 順序消息:

    • 消息消費者按照消息達到消息存儲服務器的順序消費。
  3. 消息過濾:

    • RocketMQ消息過濾支持在 ==服務端== 與 ==消費端==的消息過濾機制。
    • 消息在Broker端過濾。Broker能夠只將消息消費者感興趣的消息發送給消息過濾機制。
    • 消息在消費端過濾,消息過濾方式徹底由消息消費者自定義,但缺點是有不少無效消息會從Broker傳輸到消費者。
  4. 消息存儲:

    • 消息的堆積能力 和 消息存儲性能。RocketMQ追求消息存儲的高性能,引入內存映射機制,全部有主題的消息順存儲在同一個文件中。
  5. 消息高可用性:
  6. 消息到達(消費)低延遲:
  7. 確保消息必須被消費一次:

    • RocketMQ經過消息消費確認機制(ACK)來確保消息至少被消費一次,但因爲ACK消息有可能丟失等其餘緣由,==RocketMQ沒法作到消息只被消費一次,有重複消費的可能。==

3. 啓動參數

  1. brokerRole=?;SYNC_MASTER、ASYNC_MASTER、SLAVE。SYNC和ASYNC表示Master和Slave同步消息設置,SYNC的意思是當Slave和Master消息同步完成後,再返回發送成功的狀態。
相關文章
相關標籤/搜索