利用EMQX--搭建單機(jī)MQTT服務(wù)器

1密强、在阿里云購買云服務(wù)器或者虛擬機(jī)安裝Linux蝌焚。

??關(guān)于linux系統(tǒng)裹唆,可以在阿里云購買云服務(wù)器或者利用虛擬機(jī)安裝CentOs系統(tǒng)誓斥。我用的就是阿里云的云服務(wù)器只洒,比較方便吧。

2劳坑、安裝Emqx

安裝必要的依賴:
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

設(shè)置穩(wěn)定的倉庫毕谴,比如CentOs7的例子:
$sudo yum-config-manager --add-repo https://repos.emqx.io/emqx-ce/redhat/centos/7/emqx-ce.repo

安裝最新版本的 EMQ X
$ sudo yum install emqx

也可以安裝指定版本
先查詢軟件版本列表
$ yum list emqx --showduplicates | sort -r

emqx.x86_64                     3.1.0-1.el7                        emqx-stable
emqx.x86_64                     3.0.1-1.el7                        emqx-stable
emqx.x86_64                     3.0.0-1.el7                        emqx-stable

選擇其中一個(gè)版本安裝

$ sudo yum install emqx-3.1.0

4、啟動(dòng)Emqx

直接啟動(dòng)
$ emqx start
  emqx 3.1.0 is started successfully!

$ emqx_ctl status
  Node 'emqx@127.0.0.1' is started
  emqx v3.1.0 is running
  
系統(tǒng)啟動(dòng)
$ sudo systemctl start emqx

服務(wù)啟動(dòng)
$ sudo service emqx start

5距芬、訪問Web后臺(tái)界面

??在訪問后臺(tái)界面時(shí)涝开,應(yīng)該先開放Emqx對應(yīng)的端口。如下:

端口    端口對應(yīng)的協(xié)議或者作用
1883    MQTT protocol port
8883    MQTT/SSL port
8083    MQTT/WebSocket port
8080    HTTP API port
18083   Dashboard Management Console Port

??在虛擬機(jī)安裝的Linux 則使用該方式放開端口:

iptables -A INPUT -ptcp --dport  1883 -j ACCEPT
iptables -A INPUT -ptcp --dport  8883 -j ACCEPT
iptables -A INPUT -ptcp --dport  8083 -j ACCEPT
iptables -A INPUT -ptcp --dport  8080 -j ACCEPT
iptables -A INPUT -ptcp --dport  18083 -j ACCEPT

保存操作
service iptables save

??在阿里云則在對應(yīng)的云服務(wù)器的安全組中添加對應(yīng)的開放端口框仔。如下操作:

??登錄阿里云后臺(tái)->進(jìn)入控制臺(tái)->點(diǎn)擊云服務(wù)器ECS->實(shí)例列表中找到響應(yīng)的示例->點(diǎn)擊更多->
找到網(wǎng)絡(luò)和安全組->點(diǎn)擊安全組配置->看見響應(yīng)的安全組列表舀武,然后點(diǎn)擊配置規(guī)則->在出入方向 中都添加如下配置

1、阿里云安全組配置.png

??訪問后臺(tái)地址:http://localhost:18083离斩,其中l(wèi)ocalhost可以替換為你的云服務(wù)器公網(wǎng)IP或者虛擬機(jī)IP银舱。登錄賬號(hào):admin,密碼:public跛梗。進(jìn)入Web管理控制臺(tái)寻馏。如下圖所示:
2、web控制臺(tái).png

6核偿、測試Emqx 服務(wù)是否可用

??本次用到的測試工具是常見的MQTTBox

??MQTTBox官網(wǎng)下載地址:http://workswithweb.com/html/mqttbox/downloads.html

??下載完成后诚欠,直接安裝即可。

??安裝完成后打開客戶端漾岳,如下所示:


圖3轰绵、打開客戶端.png

??點(diǎn)擊"Create MQTT Client"后,顯示如下:


圖4、配置Client.png

??上圖中尼荆,在ClientName中填上客戶端名稱左腔,比如Test_Client;在Protocol中選擇 'mqtt/tcp' 這個(gè)選項(xiàng);在Host 中填上 127.0.0.1:1883,其中127.0.0.1需要替換成自己的與服務(wù)器公網(wǎng)IP或者虛擬機(jī)IP耀找。點(diǎn)擊save翔悠,進(jìn)入如下界面:


圖5、測試PubOrSub.png

??應(yīng)先開啟一個(gè)訂閱野芒,如上圖所示蓄愁。"Topic to subscribe" 里填入要訂閱的主題"test";"QoS" 字段選擇 "0 - Almost Once" 狞悲;然后點(diǎn)擊 "Subscribe" 按鈕撮抓。

??后發(fā)布一條消息,如上圖所示摇锋。"Topic to publish" 中輸入 "test" 丹拯,這里輸入的主題的名字必須和訂閱那里的輸入相同站超;"QoS" 中選擇 "0 - Almost Once" ;"Payload" 中輸入任何內(nèi)容都可以乖酬,如下圖所示輸入了一組JSON字符串死相;所有內(nèi)容輸入完畢之后,點(diǎn)擊"Publish"按鈕咬像。測試成功如下圖顯示:


圖6算撮、測試成功圖.png

??測試成功,說明Emqx服務(wù)可用县昂,接下來應(yīng)該測試用于設(shè)備上了肮柜。這邊打算引用的ClientSDK 為Java 語言的 MqttClient。

??MqttClient 的GitHub地址:https://github.com/fusesource/mqtt-client 倒彰。

7审洞、應(yīng)用MqttClient-Java SDK

??1.Maven中引入如下依賴:

<dependency>
    <groupId>org.fusesource.mqtt-client</groupId>
    <artifactId>mqtt-client</artifactId>
    <version>1.9</version>
</dependency>

??2.創(chuàng)建一個(gè)MqttSubscriber.java 文件,代碼如下:

public class MqttSubscriber {

/**
 * MQTT 的 IP 地址
 */
public static final String  MQTT_SERVER_URL="x.x.x.x";

public static void main(String[] args) throws Exception {
    MQTT mqtt = new MQTT();
    mqtt.setHost(MQTT_SERVER_URL, 1883);
    BlockingConnection connection = mqtt.blockingConnection();
    connection.connect();
    Topic[] topics = {new Topic("Java_Test", QoS.AT_LEAST_ONCE)};
    byte[] qoses = connection.subscribe(topics);
    Message message = connection.receive();
    System.out.println(message.getTopic());
    byte[] payload = message.getPayload();
    System.out.println("打印接收到的消息:"+new String(payload));
    message.ack();
    connection.disconnect();
   }
}

&esmp;?3.創(chuàng)建一個(gè)MqttPublisher.java 文件待讳,代碼如下:

public class MqttPublisher {

public static void main(String[] args) throws Exception {
    MQTT mqtt = new MQTT();
    mqtt.setHost(MqttSubscriber.MQTT_SERVER_URL, 1883);
    BlockingConnection connection = mqtt.blockingConnection();
    connection.connect();
    connection.publish("Java_Test", "Java".getBytes(), QoS.AT_LEAST_ONCE, true);
    System.out.println("執(zhí)行發(fā)送消息芒澜。。耙箍。撰糠。");
  }
}

??4.先執(zhí)行MqttSubscriber的main函數(shù),后執(zhí)行MqttPublisher的main函數(shù)辩昆。測試成功后控制帶輸出如下圖所示:


圖7阅酪、publisher控制臺(tái).png
圖8、subscriber控制臺(tái).png

8汁针、總結(jié)

??EMQ X 是一個(gè)為移動(dòng)互聯(lián)和物聯(lián)網(wǎng)設(shè)計(jì)的輕量級(jí)的publish-subscribe消息中間件术辐。支持當(dāng)前主流的 MQTT v3.1.1 and v5.0。示意圖如下:


圖9施无、pub-sub示意圖.png

??這邊只是對MQTT的一些粗淺應(yīng)用和認(rèn)識(shí)辉词,如果想對EMQ X有更深入的了解,可以觀看其項(xiàng)目官方文檔:https://docs.emqx.io/broker/v3/en/guide.html 猾骡。

一些參考資料:

EMQ X官方文檔:https://docs.emqx.io/broker/v3/en/guide.html

Mqtt_Box官方文檔:http://workswithweb.com/html/mqttbox/getstarted.html

Mqtt_Client GitHub:https://github.com/fusesource/mqtt-client

Mqtt GitHub:https://github.com/mqtt/mqtt.github.io

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瑞躺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子兴想,更是在濱河造成了極大的恐慌幢哨,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嫂便,死亡現(xiàn)場離奇詭異捞镰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門岸售,熙熙樓的掌柜王于貴愁眉苦臉地迎上來践樱,“玉大人,你說我怎么就攤上這事凸丸】叫希” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵甲雅,是天一觀的道長解孙。 經(jīng)常有香客問我,道長抛人,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任脐瑰,我火速辦了婚禮妖枚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘苍在。我一直安慰自己绝页,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布寂恬。 她就那樣靜靜地躺著续誉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪初肉。 梳的紋絲不亂的頭發(fā)上酷鸦,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機(jī)與錄音牙咏,去河邊找鬼臼隔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛妄壶,可吹牛的內(nèi)容都是我干的摔握。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼丁寄,長吁一口氣:“原來是場噩夢啊……” “哼氨淌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起伊磺,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤盛正,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后奢浑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛮艰,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了壤蚜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片即寡。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖袜刷,靈堂內(nèi)的尸體忽然破棺而出聪富,到底是詐尸還是另有隱情,我是刑警寧澤著蟹,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布墩蔓,位于F島的核電站,受9級(jí)特大地震影響萧豆,放射性物質(zhì)發(fā)生泄漏奸披。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一涮雷、第九天 我趴在偏房一處隱蔽的房頂上張望阵面。 院中可真熱鬧,春花似錦洪鸭、人聲如沸样刷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽置鼻。三九已至,卻和暖如春蜓竹,著一層夾襖步出監(jiān)牢的瞬間箕母,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工梅肤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留司蔬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓姨蝴,卻偏偏與公主長得像俊啼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子左医,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容