RocketMQ 視覺化環境搭建和基礎程式碼使用
RocketMQ 是一款分散式訊息中介軟體,最初是由阿里巴巴訊息中介軟體團隊研發並大規模應用於生產系統,滿足線上海量訊息堆積的需求, 在 2016 年底捐贈給 Apache 開源基金會成為孵化專案,經過不到一年時間正式成為了 Apache 頂級專案。<br />早期阿里曾經基於 ActiveMQ 研發訊息系統, 隨著業務訊息的規模增大,瓶頸逐漸顯現,後來也考慮過Kafka,但因為在低延遲和高可靠性方面沒有選擇,最後才自主研發了 RocketMQ, 各方面的效能都比目前已有的訊息佇列要好,RocketMQ 和 Kafka 在概念和原理上都非常相似,所以也經常被拿來對比;RocketMQ 預設採用長輪詢的拉模式, 單機支援千萬級別的訊息堆積,可以非常好的應用在海量訊息系統中。<br />本文分為三部分,如下圖所示:<br />
1 安裝 RocketMQ—Windows 版本
<a name="RdEk4"></a>
(1)下載 Windows 安裝包
Windows 版本下載地址:http://rocketmq.apache.org/release_notes/<br /><br />下載並解壓 rocketmq 安裝包。 <a name="LHt4n"></a>
(2)配置系統環境變數
配置系統變數 ROCKETMQ_HOME=“D:\soft\rocketmq-all-4.5.1-bin-release”,如下圖所示:<br />注意:每個人 rocketmq 存放目錄不一樣,我的在 D:\soft 下,使用者根據自己的環境配置相應的系統變數。<br />
因為接下來啟動 mqnamesrv.cmd 中使用到了環境變數 %ROCKETMQ_HOME%,所以這裡需要配置此係統變數。
<a name="2S7UG"></a>
(3)啟動 namesrv
進入 rocketmq 的 bin 目錄,執行 start mqnamesrv.cmd
,執行成功如下圖所示:<br /><br />注意:啟動之後,不能關閉此視窗。
<a name="28zct"></a>
(4)啟動 broker
還是在 bin 目錄下執行 start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true
2 安裝視覺化外掛
<a name="5iVLy"></a>
(1)下載外掛
開啟連線 https://github.com/apache/rocketmq-externals.git 下載視覺化外掛 rocketmq-externals,如下圖所示:<br /><br />點選 Download ZIP 進行下載。
我為大家準備了國內百度雲的下載連結,方便大家使用。 百度連結:https://pan.baidu.com/s/1sMO6W-562IFJF1uUBQFXYg 提取碼:fuzy
<a name="mNB2M"></a>
(2)配置外掛
下載完成之後,進入 rocketmq-externals\rocketmq-console\src\main\resources\application.properties 進行配置,如下圖所示:<br /><br />其中主要的欄位說明如下:
- server.port=8066:此視覺化外掛的執行埠。
- rocketmq.config.namesrvAddr=127.0.0.1:9876:rocketmq 的連結資訊。 <a name="lQyXw"></a>
(3)編譯外掛
進入 rocketmq-externals\rocketmq-console 資料夾,執行 mvn clean package -Dmaven.test.skip=true
<br /> 編譯專案。<br />編譯成功如下圖所示:<br /><br />編譯階段有可能出現以下兩個問題,沒有找到 mvn 命令,或編譯超級慢的問題,以下提供解決方案。
<a name="umxKe"></a>
問題一:mvn 非可以執行的命令
解決方案:這是因為沒有安裝 Maven 或者沒有配置 Maven 的環境變數導致的,下載 Maven 安裝包,增加環境變數 MAVEN_HOME=maven安裝目錄
,給 path 中新增 %MAVEN_HOME%\bin
,重新啟動命令列工具(CMD)重新執行命令。
<a name="dLAy7"></a>
問題二:編譯超慢的問題
解決方案:這是因為使用 Maven 資料來源為國外源的問題導致的,只需要配置阿里的 Maven 源即可。<br />開啟 Maven 目錄下的 conf/setting.xml 給 mirrors 節點下新增如下內容:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<a name="rypWH"></a>
(4)執行外掛
編譯成功之後,進入 target 資料夾,執行 java -jar rocketmq-console-ng-1.0.1.jar
啟動程式。<br />啟動成功之後,在瀏覽器輸入地址 http://127.0.0.1:8066 進行訪問,效果如下圖:<br />
<a name="8IIeb"></a>
3 基礎使用
<a name="EEp8i"></a>
(1)新增引用 jar 包
pom.xml 新增以下程式碼:
<!-- https://mvnrepository.com/artifact/com.alibaba.rocketmq/rocketmq-client -->
<dependency>
<groupId>com.alibaba.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>3.6.2.Final</version>
</dependency>
<a name="gb2C2"></a>
(2)新增生產者和消費者程式碼
public class RocketMQDemo {
static final String MQ_NAMESRVADDR = "localhost:9876";
public static void main(String[] args) {
// 分組名
String groupName = "myGroup-1";
// 主題名
String topicName = "myTopic-1";
// 標籤名
String tagName = "myTag-1";
new Thread(() -> {
try {
producer(groupName, topicName, tagName);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (RemotingException e) {
e.printStackTrace();
} catch (MQClientException e) {
e.printStackTrace();
} catch (MQBrokerException e) {
e.printStackTrace();
}
}).start();
new Thread(() -> {
try {
consumer(groupName, topicName, tagName);
} catch (MQClientException e) {
e.printStackTrace();
}
}).start();
}
/**
* @Description 生產者
* @Author wanglei
* @Param [groupName 分組名, topicName 主題名, tagName 標籤名]
**/
public static void producer(String groupName, String topicName, String tagName) throws InterruptedException, RemotingException, MQClientException, MQBrokerException {
DefaultMQProducer producer = new DefaultMQProducer(groupName);
producer.setNamesrvAddr(MQ_NAMESRVADDR);
producer.start();
String body = "Hello, 老王";
Message message = new Message(topicName, tagName, body.getBytes());
producer.send(message);
producer.shutdown();
}
/**
* @Description 消費者
* @Author wanglei
* @Param [groupName 分組名, topicName 主題名, tagName 標籤名]
**/
public static void consumer(String groupName, String topicName, String tagName) throws MQClientException {
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(groupName);
consumer.setNamesrvAddr(MQ_NAMESRVADDR);
consumer.subscribe(topicName, tagName);
consumer.registerMessageListener(new MessageListenerConcurrently() {
@Override
public ConsumeConcurrentlyStatus consumeMessage(
List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
for (MessageExt msg : msgs) {
System.out.println(new String(msg.getBody()));
}
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
});
consumer.start();
}
}
以上程式執行結果如下:
Hello, 老王
相關推薦
RocketMQ 視覺化環境搭建和基礎程式碼使用
RocketMQ 是一款分散式訊息中介軟體,最初是由阿里巴巴訊息中介軟體團隊研發並大規模應用於生產系統,滿足線上海量訊息堆積的需求
資料倉庫元件:Hive環境搭建和基礎用法
本文原始碼:[GitHub](https://github.com/cicadasmile/big-data-parent) || [GitEE](https://gitee.com/cicadasmile/big-data-parent) # 一、Hive基礎簡介 **1、基礎描述** Hive是基
python環境搭建和pycharm的安裝配置及漢化(零基礎小白版)
前言:寫這篇文章主要是介紹一下python的環境搭建和pycharm的安裝配置,適合零基礎的同學觀看。這篇文章你會學到python的環境搭建和python比較好用的IDE pycharm的安裝與基礎配置。執行環境:window 64位作業系統。一.python環境的搭建1.下
Redis環境搭建和視覺化工具Redis Desktop Manager安裝
安裝環境: 作業系統 Centos 7.4 redis版本:redis-4.0.11 一.安裝Redis 使用wget下載redis安裝包:wget http://download.redis.io/releases/redis-4.0.11.tar.gz 解壓壓縮
Vue+koa2開發一款全棧小程序(5.服務端環境搭建和項目初始化)
net pro 腳手架 column 小程序 ans msg 角點 import 1.微信公眾平臺小程序關聯騰訊雲 騰訊雲的開發環境是給免費的一個後臺,但是只能夠用於開發,如果用於生產是需要花錢的,我們先用開發環境吧 1.用小程序開發郵箱賬號登錄微信公眾平臺 2.【設置】→
Flask高階應用01--環境搭建和例項化藍圖
一、Flask簡介 Flask是一個基於Python實現的web開發的’微’框架,Flask和Django一樣,也是一個基於MVC設計模式的Web框架 [中文文件地址]http://docs.jinkan.org/docs/flask/ http://www.pythondoc.co
Vue+koa2開發一款全棧小程式(5.服務端環境搭建和專案初始化)
1.微信公眾平臺小程式關聯騰訊雲 騰訊雲的開發環境是給免費的一個後臺,但是隻能夠用於開發,如果用於生產是需要花錢的,我們先用開發環境吧 1.用小程式開發郵箱賬號登入微信公眾平臺 2.【設定】→【開發者工具】→第一次是git管理,開啟騰訊雲關聯 3.會一路跳轉到騰訊雲的【開通開發環境】的流程要走 1.已經完成
Vue+koa2開發一款全棧小程式(服務端環境搭建和專案初始化)
1.微信公眾平臺小程式關聯騰訊雲 騰訊雲的開發環境是給免費的一個後臺,但是隻能夠用於開發,如果用於生產是需要花錢的,我們先用開發環境吧 1.用小程式開發郵箱賬號登入微信公眾平臺 2.【設定】→【開發者工具】→第一次是git管理,開啟騰訊雲關聯 3.會一路跳轉到騰
TypeScrip入門—環境搭建和第一個TS程式碼(一)
介紹 TypeScript 擴充套件了 JavaScript 語法,任何已經存在的 JavaScript 程式,可以不加任何改動,在 TypeScript 環境下執行。TypeScript 只是向 JavaScript 添加了一些新的遵循 ES6 規範的語法,以及基於類的面向物件程式設計
python環境搭建和pycharm的安裝配置及漢化
宣告:參見 【原文】 一.1.python環境的搭建 2.安裝python(這裡以python3.6為例) 二.pycharm的安裝與配置 1.pycharm的下載 &nb
Jenkins高階篇之Pipeline方法篇-Pipeline Utility Steps-1-A-開發環境搭建和Jenkins執行程式碼測試
前面我說過,要陸續介紹模擬真實開發場景。這篇,來補充一篇Jenkins+Pipeline+groovy的開發環境。主要環境就是Eclipse,程式碼倉庫服務採用github。我知道,有些人對於這個已經很熟悉,有些人還沒有使用過git,更別說提交程式碼了。希望這篇,能帶給你體驗
Common Lisp程式設計初步---環境搭建和外部lisp程式碼執行
1 介紹 Lisp是世界上第二古老的語言,第一古老語言是Fortran。Lisp語言的創立者為John McCarthy,一位人工智慧領域裡的先驅。該語言自創立以來經歷了50多年而不衰,是一種很有生命力的語言。該語言的發展和使用與CMU和MIT兩所高校密不可分
Go 開發環境搭建和程式碼除錯
寫這篇筆記的目的,主要是分享我在Go學習中遇到的坑。讓後面的學習者參考一下有用的經驗。 其中有一些小技巧,對初學者來說,可能會大大節約填坑的時間。 比如如何設定vscode的Go偵錯程式,Go的語法高亮,Go的外掛下載加速和
暑假學習計劃:Day_1.JSP&Servlet&Tomcat 環境搭建到基礎的認識。
結構 靜態 work 初步 none fff 雙擊 world html4 1.了解JSP和Servlet(百度了解即可)。 2.了解B/S和C/S。分別是 瀏覽器/服務器 和 客戶端/服務器。 其中 B/S 被稱為瘦模式(主流模式)。 3.了解並下載Tomcat
第四章第五章 環境搭建和24個命令總結
gpl和gun 基本命令 cpGUN 和 GPL GUN‘s not Unix 遞歸寫法,簡寫也是GUN1. GUN 是84年自由軟件資金會牽頭弄的一個類unix操作系統,但是因為它不實用,而且總是跳票,所以並沒有流行起來。2. 但是它裏面的很多軟件是很好的,比如bash,這些都被用在了linux系統
NET Core 環境搭建和命令行CLI入門[轉]
c# value visual develop tom print ror rhel 7 core NET Core 環境搭建和命令行CLI入門 時間:2016-07-06 01:48:19 閱讀:258 評論:0 收藏:0
activiti工程環境搭建和流程圖創建
activiti當一個業務需要的多個參與者來參與執行的時候,如果我們要自己編程的話,我們需要對業務非常的熟悉,並且在編程的時候要做一系列復雜的判斷,如果出現第一種情況,我們要怎麽辦,如果出現第二種情況,我們又該怎麽辦,這是一個工作量非常大的事情,因為各個關系耦合性相對較高,所以我們又很難保證我們的系統一定會成
mybatis 環境搭建和基本說明
name utf-8 rom ide typealias setting puts class tab mybatis介紹就不多提了,直接步入正題。 先準備好eclipse和MySQL,然後先看一下目錄結構 文件和類很少,所以mybatis的搭建是非常簡單的,如搭建中
maven+eclipse+ssm 環境搭建和啟動
sting pda sta and project ins setting pro load 該類工程環境搭建和啟動方法 --------------------------------------------------------------------------
聊聊Spring boot2.X開發環境搭建和基本開發
nat profile c中 ddb 被占用 bae nor 可能 占用 對Spring Boot的開發環境進行搭建,並對它的特點做進一步的了解,才能更好地對Spring Boot有更深入的介紹。但是無論如何都需要先來搭建Spring Boot的工程。搭建Spring Bo