當前位置:首頁 » 雲伺服器 » rabbitmqtt伺服器地址

rabbitmqtt伺服器地址

發布時間: 2022-12-12 06:38:42

1. 黑群暉怎樣搭建MQTT伺服器

1、打開群暉Docker,注冊表搜索:mqtt;
2、點擊下載好的鏡像文件創建容器,輸入容器名字,點擊高級設置
3、勾選啟用自動重新啟動
4、點擊網路—-勾選與docker host相同的網路,點擊應用,一直下一步直到創建完成

2. 在雲伺服器上搭建了mqtt,為什麼手機連接不上mqtt,要怎麼做才能連接上求求大神幫忙

MQTT協議是廣泛應用的物聯網協議,使用測試MQTT協議需要MQTT的代理。有兩種方法使用MQTT服務,一是租用現成的MQTT伺服器,如阿里雲,網路雲,華為雲等公用的雲平台提供的MQTT服務,使用公用的MQTT伺服器的好處是省事,但如果僅僅用於測試學習還需要注冊帳號,靈活性差些,有的平台還需要付費。另一方法是自己使用開源的MQTT組件來搭建。
MQTT伺服器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。
這里介紹的是用輕量級的mosquitto開源項目來搭建一個屬於自己的MQTT伺服器。
第一步:需要安裝一台linux主機,這不多介紹,可以使用真機安裝也可以使用虛擬機安裝。如果僅僅是自己測試使用都可以。
第二步:下載mosquitto需要的依賴
sudo apt-get install libssl-devsudo apt-get install uuid-devsudo apt-get install cmake

第三步:下載mosquitto並解壓,現在mosquitto官網最新的版本是1.5.1
tar xzvf mosquitto-1.5.1.tar.gz
第四步:編譯
cd mosquitto-1.5.1/
make
make install
第五步:啟動mosquitto
./mosquitto -v
1535473957: mosquitto version 1.5.1 starting
1535473957: Using default config.
1535473957: Opening ipv4 listen socket on port 1883.
1535473957: Opening ipv6 listen socket on port 1883.
這時候mosquitto就會以默認的參數啟動。如果需要帶配置文件可以修改配置文件mosquitto.conf,
啟動時候加上參數 -c,
./mosquitto -c mosquitto.conf
可以看到,mosquitto監聽的埠為1883.
這時候我們的MQTT伺服器就搭建好了。可找一個mqtt客戶端來測試一下。
先發布一個主題「home/garden/fountain/2」
內容是「hello world」
這時候在mosquitto會列印出下面的log
535474247: New connection from 192.168.1.105 on port 1883.
1535474247: New client connected from 192.168.1.105 as MQTT_FX_Client (c1, k60).
1535474247: No will message specified.
1535474247: Sending CONNACK to MQTT_FX_Client (0, 0)
1535474307: Received PINGREQ from MQTT_FX_Client
1535474307: Sending PINGRESP to MQTT_FX_Client
1535474339: Received PUBLISH from MQTT_FX_Client (d0, q0, r0, m0, 'home/garden/fountain/2', ... (12 bytes))
1535474367: Received PINGREQ from MQTT_FX_Client
1535474367: Sending PINGRESP to MQTT_FX_Client

訂閱主題「home/garden/fountain/2」

可以看到收到了自己發布的消息。
用wireshark抓包
可以看到抓到了一個MQTT的publish的報文。

3. mqtt 伺服器 哪個好 activemq rabbitmq mosquitto

1、 下載mosquitto安裝文件()
2、 找到相應系統的安裝文件安裝,如果不想做任何設置直接在服務里啟動就行。
3、配置文件
如果需要配置一些用戶名、密碼、用戶許可權的參數,則需要修改安裝目錄下的mosquitto.conf文件
下面來說說我用到的一些參數吧:
①用戶密碼: #password_file pwfile.example 後面跟著是用戶密碼配置文件,需寫上絕對路徑並且路徑不帶空格
②創建用戶密碼:打開doc窗口,進入mosquitto安裝目錄,運行mosquitto_passwd -c pwfile.example userName 回車,然後輸入密碼(密碼輸入兩遍後,在該文件里會自動加密密碼)
生成的文件內容格式例如:
userName:$6$Ls7JYQTdn9xagJJ2$/WArx/SAtFRKlvKKnHRCUg==
userName2:$6$bymgVcrtj+7wj8mR$+zmAxnOybqJvrBZboxX1XXPnz/TKZwz9aKQJ72zJym5A=
③如果想再增加用戶,則執行mosquitto_passwd -u pwfile.example userName2即可
④用戶許可權:#acl_file aclfile.example 後面跟著是用戶許可權配置文件,需寫上絕對路徑並且路徑
文件內容格式為:
user userName

/etc/ld.so.conf.d
mosquitto.conf
/usr/local/lib/python2.6/site-packages ( mosquitto.py )
/usr/local/bin
vi /etc/sysconfig/iptables
/usr/local/src/mosquitto-1.1.3/lib/python
make install
ldconfig
不改config.mk裡面的東西
需要安裝
yum -y install patch make gcc gcc-c++ gcc-g77 flex bison

centos5.6下 yum -y install gcc automake autoconf libtool make
yum -y install openssl openssl-devel vim-minimal

這里為只讀
topic read 主題
user userName2
這里為可讀可寫
topic 主題
topic #(或+)表示可以讀寫任何主題
到這里用戶密碼及許可權已配置完成,訂閱和發布的時候加上用戶名及密碼即可驗證:
例如:訂閱
client = new MqttClient("tcp://127.0.0.1:1883","java_client0000000000");
// 回調處理類
Myback callback = new Myback();
client.setCallback(callback);
// 創建連接可選項信息
MqttConnectOptions conOptions = new MqttConnectOptions();
conOptions.setCleanSession(false);
conOptions.setUserName("userName");
conOptions.setPassword("pwd".toCharArray());
// 連接broker
client.connect(conOptions);
client.subscribe("主題");
}
發布:
MqttClient client = new MqttClient("tcp://127.0.0.1:1883","mqttserver-pub");
MqttTopic topic = client.getTopic("主題");
MqttMessage message = new MqttMessage(topic.getName().getBytes());
message.setQos(1);
MqttConnectOptions options = new MqttConnectOptions();
options.setUserName("userName");
options.setPassword("pwd".toCharArray());
client.connect(options);
topic.publish(message);
}
即可驗證!

4. 如何配置rabbitmqtt伺服器的ip地址

RabbitMQ Server安裝
################################################
1.安裝Erlang
sudo yum install erlang

2.安裝RabbitMQ Server
需要先導入key
sudo rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
可先將內容保存至文本文件,如,rabbitmq-signing-key-public.asc.txt
sudo rpm --import rabbitmq-signing-key-public.asc.txt

3.安裝rabbitmq-server-3.4.1-1.noarch.rpm
sudo yum install rabbitmq-server-3.4.1-1.noarch.rpm

4.啟動RabbitMQ Server
注冊為系統服務
sudo chkconfig rabbitmq-server on
啟動RabbitMQ Server
sudo /etc/init.d rabbitmq-server stop/start/etc
sudo service rabbitmq-server stop/start/etc

5.若啟動失敗檢測埠是否被佔用
4369 (epmd), 25672 (Erlang distribution)
5672, 5671 (AMQP 0-9-1 without and with TLS)
15672 (if management plugin is enabled)
61613, 61614 (if STOMP is enabled)
1883, 8883 (if MQTT is enabled)

5. springboot整合RabbitMQ Mqtt

第一,pom配置,我們需要引入相關jar:

第二,配置MQTT伺服器基本信息,在springBoot配置文件application.properties中配置,添加如下:

第三,配置MQTT消息推送配置類,

第四,配置MqttGateway消息推送介面類,在sendToMqtt(String data,@Header(MqttHeaders.TOPIC)String topic)介面中,data為發送的消息內容,topic為主題。指定topic,則我們的介面可以根據需要,向不同的主題發送消息,方便靈活應用。如果不指定,則使用默認配置的主題。

第五,介面類測試下功能,用Postman調用sendMqtt.do介面,往hello主題發送消息,用MQTTLens訂閱hello主題,從下面截圖,可以看出可以正常往MQTT服務發送消息了,而且可以訂閱到。

6. 【內部分享】MQTT協議解讀及使用經驗

時間:2018-07-26

Q: 什麼是網路連接?

A: 網路連接是傳輸層定義的概念,在傳輸層以下只存在網路數據包的相互交換。

所謂連接,其實也不是在網路上有一條真實存在的數據通道。只要通信雙方在一段時間內持續保持數據包交換,就可以視為雙方建立的連接並沒有斷開。

連接的建立是依託於TCP協議的三次握手,一旦連接已經建立完畢,通信雙方就可以復用這條虛擬通道進行數據交換。如果連接保持長時間工作一直沒有被中斷,那麼這樣的TCP連接就俗稱為長連接。

Message Queue Telemetry Transport ,中文直譯: 消息隊列遙測傳輸協議

在MQTT協議被設計出來的年代,還沒有物聯網這么時髦的詞彙,當年叫做 遙測設備

MQTT協議真正開始聲名鵲起的原因,是其正好恰恰踩中移動互聯網發展的節拍,為消息推送場景提供了一個既簡便又具有良好擴展性的現成解決方案。

http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html

可以看出,MQTT對消息頭的規定十分精簡, 固定頭部佔用空間大小僅為1個位元組 ,一個最小的報文佔用的空間也 只有兩個位元組 (帶一位元組的長度標識位)。

這也是MQTT協議針對不穩定及帶寬低下的網路環境做出的特定設計 - - - - 盡可能地節省一切不必要的網路開銷

Q:為什麼MQTT協議需要心跳報文(PINGREQ, PINGRESP)來維護連接狀態,只監控該TCP的連接狀態是否可以實現目的?

A: TCP數據傳輸默認的超時時間過長,不符合應用層上細粒度的要求。

TCP數據傳輸超時的情況可分成三種: 服務端斷開 、 客戶端斷開 、 中間網路斷開 。

在前兩種場景下,若斷開操作是一方主動發起的,即表示為TCP連接正常結束,雙方走四次揮手流程;若程序異常結束,則會觸發被動斷開事件,通信另一方也能立刻感知到本次連接所打開的 Socket 出現中斷異常。

唯獨中間網路的狀態是通信雙方不能掌握的。 在Linux系統下 ,TCP的連接超時由內核參數來控制,如果通信中的一方沒有得到及時回復,默認會主動再嘗試 6次 。如果還沒有得到及時回應,那麼其才會認定本次數據超時。

連帶首次發包與六次重試,Linux系統下這7次發包的超時時間分別為 2的0次方 2的6次方 ,即1秒、2秒、4秒、8秒、16秒、32秒、64秒,一共127秒。MQTT協議認為如此長的超時時間對應用層而言粒度太大,因此其在應用層上還單獨設計屬於自身的心跳響應控制。常見的MQTT連接超時多被設定為 60秒 。

擴展知識 - TCP的KeepAlive機制: http://hengyunabc.github.io/why-we-need-heartbeat/

由通信中的 報文標識符 ( Packet Identifier )傳達。

Q:僅Publish與Pubrec能保證消息只被投遞一次嗎?

A: 業務上可以實現,但MQTT協議並沒有如此設計,原因如下:

每個消息都會擁有屬於自己的報文標識符,但如果需要兩次數據交換就實現消息僅只收到一次,就需要通信雙方記錄下每次使用的報文標識符,並且在處理每一條消息時都需要去重處理,以防消息被重復消費。

但MQTT協議最初被設計的工作對象是輕量級物聯設備,為此在協議的設計中報文標識符被約定為 可重用 ,以減少對設備性能的消耗,換回的代價不得不使用四次網路數據交換,才能確保消息正好被消費一次。

Q:兩個不同客戶端在發布與訂閱同一Topic下的消息時,都可以提出通信Qos要求,此時以哪項為基準?

A: 偽命題,故意在分享時埋下坑,等人來踩。

兩個不同客戶端的通信是需要 Broker 進行中轉,而不是直連。因此,通信中存在兩個不同的會話,雙方的Qos要求僅僅作用於它們與 Broker 之間的會話,最終的Qos基準只會向最低要求方看齊。

例:遺囑消息的正確使用方式可參考此篇文章: https://www.hivemq.com/blog/mqtt-essentials-part-9-last-will-and-testament

雖然可以藉助 Retain Message 實現綁定一條消息至某個Topic,以達到消息的暫時保留目的。

但首先 Retain Message 並不是為存儲場景而設計的,再次MQTT協議並沒有對消息的持久化作出規定,也就是說Broker重啟後,現有保留消息也將丟失。

Q:兩種特殊消息的使用場景?

A: 遺囑消息,多用於客戶端間獲取互相之間異常斷線的消息通知;

保留消息,可保存 最近一條 廣播通知,多用於公告欄信息的發布。

Eclipse Mosquitto :MQTT協議的最小集實現

有 EMQ , HiveMQ , RabbitMQ MQTT Adapter 等。

Qos=2 消息保障的網路I/O次數過多,如果不是必需,盡少在程序里使用此類消息。

畢竟當初其設計的目的是為了減少設備的性能佔用,但若應用場景並不是物聯網,而是用於手機、電腦或瀏覽器端等現在已不缺性能的設備上,最好在報文體中,使用UUID生成全局唯一的消息ID,然後自行在業務解析中判斷此報文是否被消費過。

或者,業務方在處理消息時保證其被消費的冪等性,也可消除重復消息對系統帶來的影響。

正如MQTT協議並沒有依賴TCP連接狀態,自己在應用層協議上實現心跳報文來控制連接狀態,業務方作為MQTT協議的使用者,也不要完全依賴協議的工作狀態,而是依託MQTT協議建立屬於業務本身的信息匯報機制,以加強系統的穩健性。

Retain Message 可視為客戶端主動拉取的行為。如果業務系統採用 HTTP+MQTT 雙協議描述業務過程,主動拉取的操作也可使用 HTTP 請求替代。

作為一個長連接型的應用,上線前需要根據業務量級,評估對操作系統 埠數 文件描述符 的佔用要求,以防伺服器資源被打滿。

在服務端的配置文件和客戶端的連接參數中,都擁有 max_inflight_messages 此項配置,來維護 Qos=1 or 2 消息是否被成功消費的狀態。

MQTT 最初被設計為物聯網級的通信協議,因此此參數的默認配額較小(大多數情況下被限制到10至20)。

但如果將MQTT協議應用至手機、PC或Web端的推送場景時,硬體性能已不在是瓶頸,在實際使用中推薦把此參數調大。

Mosquitto提供Bridge功能,需要我們自己配置。

Bridge 意為橋接,當我們把兩台Broker橋接在一起時,只需要修改一台Broker的配置,填上另一台Broker的運行地址。前一台Broker將作為客戶端發布與訂閱後一台Broker的所有Topic,實現消息互通的目的。

橋接帶來的問題有以下幾點:

我的建議:

Websockets協議被設計的目的是為瀏覽器提供一個全雙工的通信協議,方便實現消息推送功能。

在Websockets協議被設計出來前,受限於HTTP協議的一問一答模型,消息的推送只能靠輪詢來實現,在資源消耗與時效性保障上,均難以達到令人滿意的效果。

Websockets協議復用了HTTP協議的頭部信息,告知瀏覽器接下來的操作將觸發協議升級,然後通信雙方繼續復用HTTP的Header,但報文內容已轉變為雙方均接受的新協議的格式。

Websockets協議改進了網頁瀏覽中的消息推送的方式,因此被廣泛應用在聊天、支付通知等實時性要求比較高的場合下。

MQTT協議重點在於 消息隊列的實現,其對消息投遞的方式作出約定,並提供一些額外的通信保障

MQTT可採取原生的TCP實現,也有基於Websockets的實現版本。當然後者在網路位元組的利用率上,不如前者那麼精簡。但瀏覽器端無法直接使用TCP協議,所以就只能基於Websockets協議開發。

不過基於Websockets的應用也有方便之處:一是證書不需要額外配置,直接與網站共用一套基礎設施;二是可使用 Nginx 等工具管理流量,與普通HTTP流量可共用一套配置方法。

MQTT非常適合入門,原因如下:

實際的應用場景遠比理想中的復雜,無法一招走遍天下,必須做好取捨。

MQTT協議在這方面做得很優秀,以後工作中可以作為參考,設計好自己負責的業務系統。

熱點內容
演算法第五版 發布:2025-03-20 05:17:57 瀏覽:728
湖南台訪問 發布:2025-03-20 05:10:32 瀏覽:37
腳本和秒搶 發布:2025-03-20 05:06:29 瀏覽:590
b35鎖如何設置密碼 發布:2025-03-20 05:06:27 瀏覽:903
淘寶如何租雲伺服器 發布:2025-03-20 05:05:12 瀏覽:211
編程忌諱 發布:2025-03-20 04:58:35 瀏覽:426
國家知識產權專利資料庫 發布:2025-03-20 04:54:29 瀏覽:414
win7怎麼給文件夾設密碼 發布:2025-03-20 04:52:38 瀏覽:723
安卓手機電影怎麼投屏到ipad上 發布:2025-03-20 04:27:23 瀏覽:677
蘋果安卓基於什麼開發 發布:2025-03-20 04:20:52 瀏覽:520