본문 바로가기
기타

[통신] MQTT

by 자몽먹은토끼 2025. 3. 3.
728x90
반응형
MQTT (Message Queuing Telemetry Transport)

  • 브로커 역할의 MQTT
  • 공급자/발행자 Publisher
  • 구독자 Subscriber

구독자가 특정 'Topic'을 구독하면, 발행자가 해당 'Topic'의 메세지를 발행할 때마다 브로커를 통해 해당 메세지가 전달된다.

 

예를 들어 구독자가 구독한 Topic이 '날씨'라면, 발행자가 '날씨'에 해당하는 메세지를 발행할 때 마다 구독자에게 해당 데이터가 전송된다. 만약 publisher가 다른 topic인 'AI'의 메세지를 발행한다면 이 구독자에게는 메세지가 전송되지 않는다.

 

 

sudo apt update && sudo apt install -y mosquitto mosquitto-clients  # Ubuntu
pip install paho-mqtt

 

 

subscriber.py
import paho.mqtt.client as mqtt

client= mqtt.Client()
client.connect("localhost", 1883, 60)
client.subscribe('test/topic')

def message(client, userdata, msg):
    print(f'Message: {msg.payload.decode()} (Topic: {msg.topic})')

client.on_message= message
print('Receiving MQTT messages ..')
client.loop_forever()

 

 

 

publisher.py
import paho.mqtt.client as mqtt

client= mqtt.Client()
client.connect('localhost', 1883, 60)

client.publish('test/topic', 'what the.. !')
print('Complete sending messages!')
client.disconnect()

 

 

무조건 subscriber가 먼저 실행 된 상태에서, publisher를 실행하면 발행할 때마다 subscriber에 메세지가 출력된다.

728x90
반응형