MQTT broker install and examples - githeim/windheim_archive GitHub Wiki
Introduce how to install MQTT broker and MQTT pub/sub examples
Install MQTT broker(mosquitto)
Eclipse Mosquitto is open source MQTT broker& library.
$ sudo apt update
$ sudo apt install mosquitto mosquitto-clients libmosquitto-dev
MQTT test
## start moquitto MQTT broker
mosquitto
Start subscriber
mosquitto_sub -h localhost -t test/topic00 -q 1
Start publisher
mosquitto_pub -h localhost -t test/topic00 -m "Hell Wolrd" -q 1
-h β the host to connect to
-t β the topic of a message
-m β the message
-q β the quality of service
Simple Pub/Sub Test
$ mosquitto_sub -h localhost -t test/topic00 -q 1
$ mosquitto_pub -h localhost -t test/topic00 -m "Hell Wolrd" -q 1
Hell Wolrd
MQTT QoS
μ΅λ ν λ²
QoS=0
λ©μμ§λ μ΅λ ν λ² μ λ¬λκ±°λ μ ν μ λ¬λμ§ μμ΅λλ€. μ΄ λ€νΈμν¬ κ° μ λ¬μ μμ νμΈλμ§ μμ΅λλ€. λ©μμ§λ μ μ₯λμ§ μμ΅λλ€. ν΄λΌμ΄μΈνΈ μ°κ²°μ΄ λμ΄μ§κ±°λ μλ²κ° μ€ν¨νλ κ²½μ° λ©μμ§λ μμ€λ μ μμ΅λλ€. QoS=0μ κ°μ₯ λΉ λ₯Έ μ μ‘ λͺ¨λμ λλ€. μ΄ λͺ¨λλ "μ€ν ν μμ "λΌκ³ λ ν©λλ€. MQTT protocol μμλ QoS=0 μ λ°νμ ν΄λΌμ΄μΈνΈμ μ λ¬νκΈ° μν΄ μλ²κ° νμνμ§ μμ΅λλ€. μλ²κ° λ°νλ¬Όμ μμ ν λ ν΄λΌμ΄μΈνΈ μ°κ²°μ΄ λμ΄μ§λ κ²½μ° μλ²μ λ°λΌ λ°νλ¬Όμ μ κ±°ν μ μμ΅λλ€. ν λ λ©νΈλ¦¬(MQXR) μλΉμ€μμλ QoS=0μΌλ‘ μ‘μ λ λ©μμ§λ₯Ό μ κ±°νμ§ μμ΅λλ€. ν΄λΉ λ©μμ§λ λΉμ§μ λ©μμ§λ‘ μ μ₯λκ³ ν κ΄λ¦¬μκ° μ€μ§λλ κ²½μ°μλ§ μ κ±°λ©λλ€.
μ΅μ ν λ²
QoS=1
QoS=1μ κΈ°λ³Έ μ μ‘ λͺ¨λμ λλ€. λ©μμ§λ νμ μ΅μ ν λ² μ λ¬λ©λλ€. μ‘μ μκ° μμ νμΈμ μμ νμ§ μλ κ²½μ°, λ©μμ§λ μμ νμΈμ΄ μμ λ λκΉμ§ DUP νλκ·Έκ° μ€μ λμ΄ λ€μ μ‘μ λ©λλ€. λ°λΌμ μμ μμκ² λμΌν λ©μμ§κ° μ¬λ¬ λ² μ μ‘λκ³ μ΄λ₯Ό μ¬λ¬ λ² μ²λ¦¬ν μλ μμ΅λλ€. λ©μμ§κ° μ²λ¦¬λ λκΉμ§ μ‘μ μμ μμ μλ λ©μμ§λ₯Ό λ‘컬μ μ μ₯ν΄μΌ ν©λλ€. λ©μμ§λ μ²λ¦¬λ νμ μμ μλ‘λΆν° μμ λ©λλ€. μμ μκ° λΈλ‘μ»€μΈ κ²½μ°, λ©μμ§λ ꡬλ μμκ² λ°νλ©λλ€. μμ μκ° ν΄λΌμ΄μΈνΈμΈ κ²½μ° λ©μμ§λ ꡬλ μ μ ν리μΌμ΄μ μκ²λ‘ μ λ¬λ©λλ€. λ©μμ§κ° μμ λ ν μμ μλ μ‘μ μμκ² μμ νμΈμ μ‘μ ν©λλ€. μμ μλ‘λΆν° μμ νμΈμ λ°κ³ λλ©΄ μ‘μ μλ‘λΆν° λ©μμ§κ° μμ λ©λλ€.
μ νν ν λ²
QoS=2
λ©μμ§λ νμ μ νν ν λ²λ§ μ μ‘λ©λλ€. λ©μμ§κ° μ²λ¦¬λ λκΉμ§ μ‘μ μμ μμ μλ λ©μμ§λ₯Ό λ‘컬μ μ μ₯ν΄μΌ ν©λλ€. QoS=2λ κ°μ₯ μμ νμ§λ§ κ°μ₯ λλ¦° μ μ‘ λͺ¨λμ λλ€. λ©μμ§κ° μ‘μ μμμ μμ λκΈ° μ μ μ‘μ μμ μμ μ μ¬μ΄μ μ΅μ λ μμ μ μ‘μ΄ λ°μν©λλ€. λ©μμ§λ 첫 λ²μ§Έ μ μ‘ νμ μμ μ μΈ‘μμ μ²λ¦¬λ μ μμ΅λλ€. 첫 λ²μ§Έ μ μ‘ μμμ μ‘μ μλ λ©μμ§λ₯Ό μ μ‘νκ³ μμ μμκ²μ λ©μμ§λ₯Ό μ μ₯νλ€λ μμ νμΈμ λ°μ΅λλ€. μ‘μ μκ° μμ νμΈμ μμ νμ§ μλ κ²½μ°, λ©μμ§λ μμ νμΈμ΄ μμ λ λκΉμ§ DUP νλκ·Έκ° μ€μ λμ΄ λ€μ μ‘μ λ©λλ€. λ λ²μ§Έ μ μ‘ μμμ μ‘μ μλ μμ μμκ² λ©μμ§ βPUBRELβμ μ²λ¦¬λ₯Ό μλ£ν μ μλ€κ³ μ λ¬ν©λλ€. μ‘μ μκ° βPUBRELβ λ©μμ§μ μμ νμΈμ μμ νμ§ μμ κ²½μ° μμ νμΈμ΄ μμ λ λκΉμ§ βPUBRELβ λ©μμ§κ° λ€μ μ‘μ λ©λλ€. μ‘μ μλ βPUBRELβ λ©μμ§μ λν μμ νμΈμ μμ νλ©΄ μ μ₯νλ λ©μμ§λ₯Ό μμ ν©λλ€. λ©μμ§λ₯Ό λ€μ μ²λ¦¬νμ§ μλλ€λ κ°μ νμ μμ μκ° μ²« λ²μ§Έ λλ λ λ²μ§Έ λ¨κ³μμ λ©μμ§λ₯Ό μ²λ¦¬ν μ μμ΅λλ€. μμ μκ° λΈλ‘μ»€μΈ κ²½μ° μ΄λ λ©μμ§λ₯Ό ꡬλ μμκ² λ°νν©λλ€. μμ μκ° ν΄λΌμ΄μΈνΈμΈ κ²½μ° λ©μμ§λ ꡬλ μ μ ν리μΌμ΄μ μΌλ‘ μ λ¬λ©λλ€. μμ μλ μ‘μ μμκ² λ©μμ§ μ²λ¦¬κ° μλ£λμλ€λ μλ£ λ©μμ§λ₯Ό μ‘μ ν©λλ€.