原创 RocketMQ之源碼環境篇:搭建Debug環境

系列文章索引: RocketMQ之Namesrv篇:優雅的服務管理 RocketMQ之Producer篇:可靠的消息傳輸 RocketMQ之消息存儲篇(一):Java也能做高性能存儲? 源碼地址: https://github.c

原创 Java併發編程和高併發學習總結(一)-大綱

系列 Java併發編程和高併發學習總結(二)-Java內存模型 開篇語 想寫這樣一個東西很久了,在慕課網上學完某老師的課程(避免打廣告的嫌疑就不貼出來了,感興趣的同學可以去慕課網上去搜來看看,是個付費課程)之後就覺得應該有這樣的一

原创 RocketMQ之Namesrv篇:優雅的服務管理

Namesrv就是RMQ中的路由服務,可以類比ZK在Kafka中的作用,實現了路由管理、服務註冊、服務發現等功能;不過Namesrv相比zookeeper來得要更輕便一點。 一、功能 Namesrv的功能大概可以總結爲下面2點:

原创 RocketMQ-消息存儲(一):寫入過程

1、當前broker停止工作或爲slave則拒絕寫入;消息主題長度超過256個字符、消息屬性長度超過65536個字符則拒絕該消息寫入 2、如果消息的延遲級別大於0 ,將消息的原主題名稱與原消息隊列 ID 存入消息屬 性中,用延遲消

原创 RocketMQ-消息存儲(四)、消息消費隊列和索引文件構建機制

當消息生產者提交的消息存儲在CommitLog文件中時,會及時更新ConsumeQueue、IndexFile。RocketMQ通過開啓一個線程ReputMessageService來準實時準發CommitLog文件更新事件,相應

原创 RocketMQ-消息發送(一)、消息生產者啓動流程

RocketMQ 支持 3種消息發送方式 :同步(sync)、 異步(async)、單向( oneway )。 同步:發送者向 MQ 執行發送消息 API 時,同步等待,直到消息服務器返回發送結果。 異步:發送者向 MQ 執行發送

原创 RocketMQ-消息發送(二)、消息隊列負載機制

消息生產者啓動之後,我們就可以按照需要發送消息了,消息發送之前,首先需要獲取主題的路由信息,只有獲取了這些信息我們才知道消息要發送到具體的Broker節點。 查找主題的路由信息 tryToFindTopicPublishlnfo

原创 RocketMQ-消息存儲(二)、內存映射機制

RocketMQ的存儲文件 RocketMQ的存儲文件包括CommitLog文件、ConsumerQueue文件和IndexFile文件。 CommitLog :消息存儲文件,所有消息主題的消息都存儲在 CommitLog 文件

原创 RocketMQ-消息發送(三)、消息發送異常機制

消息發送高可用主要通過兩個手段重試與Broker 規避。 首先消息發送端採用重試機制 ,由 retryTimesWhenSendFailed 指定同步方式重試次數,異步重試機制在收到消息發送結構後執行回調之前進行重試。由retry

原创 RocketMQ之消息存儲篇(一):Java也能做高性能存儲?

一、RocketMQ存儲概要設計 RMQ主要存儲的文件包括commitlog文件、consumeQueue文件、IndexFile文件。 CommitLog是消息存儲文件,所有消息主題的消息都存儲在CommitLog文件中;Consu

原创 RocketMQ之Producer篇:可靠的消息傳輸

一、消息數據結構 RMQ的消息封裝在org.apache.rocketmq.common.message類中,屬性: private String topic; //消息所屬topic

原创 RocketMQ-Namesrv

Namesrv就是RMQ中的路由服務,相當於ZK在Kafka中的作用,實現了路由管理、服務註冊、服務發現等功能。 一、功能 接收broker的請求註冊broke路由信息(包括master和slave):broker啓動時向所有Nam

原创 RocketMQ - 源碼環境搭建

源碼地址: https://github.com/apache/incubator-rocketmq 導入方式: 因爲源碼託管在git上,使用git命令行導入或者IDE導入都是很方便的 ,這裏就不贅述,我用eclipse直接導入後的源

原创 Java併發學習(四)-J.U.C之工具類

1、總覽 CountDownLatch允許一個或多個線程等待某些操作完成 Semaphore Java版本的信號量實現 CyclicBarrier 一種輔助性的同步結構,允許多個線程等待到達某個屏障 Exchanger 在線程間交換

原创 Java併發學習(三)- J.U.C之Atomic包

線程安全性 定義:當多個線程訪問某個類時,不管運行時環境採用何種調度方式,或者這些進程將如何交替執行,並且在主調代碼中不需要任何額外的同步或協同,這個類都能表現出正確的行爲,那麼就稱這個類是線程安全的,線程安全類一般具有這幾個特性: