본문 바로가기
서버

MQTT (mosquitto broker 오픈소스)

by 탁구치는 개발자 2016. 11. 2.

우분투에서 MQTT 테스트 하는 방법에 대해서 정리

Broker 서버로 사용하게될 오픈 소스는 mosquitto 이다.


다음과 같이 설치하고

1. wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key

2. sudo apt-key add mosquitto-repo.gpg.key

3. sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list

4. sudo apt-get install mosquitto


[Mosquitto 서버 시작]

vagrant@vagrant:~$ mosquitto -c /etc/mosquitto/mosquitto.conf


[Subscriber 등록한다.]

vagrant@vagrant:~/tools/mqtt$ mosquitto_sub -d -t test1


[Publisher 에서 메세지를 전송]

vagrant@vagrant:~/tools/mqtt$ mosquitto_pub -d -t test1 -m "hello world"


[Java에서 메세지를 전송하는 방법]

<repository>

<id>paho-mqtt-client</id>

<name>Paho MQTT Client</name>

<url>https://repo.eclipse.org/content/repositories/paho-releases/</url>

</repository>


<dependency>

<groupId>org.eclipse.paho</groupId>

<artifactId>mqtt-client</artifactId>

<version>0.4.0</version>

</dependency>


@Test
public void test() {
	try {
		MqttClient client = new MqttClient("tcp://localhost:1883", "clientID");
		client.connect();
		MqttMessage message = new MqttMessage();
		message.setPayload("send my message!!".getBytes());
		client.publish("test1", message);
		client.disconnect();
	} catch (MqttException e) {
		e.printStackTrace();
	}
}


[동작 원리]

  1. mosquitto 서버 구동
  2. Subscriber 등록
    • 등록이 되면 mosquitto(broker) 서버와 TCP 커넥션을 맺고 유지한다.
    • 커넥션을 유지하는 동안 지속적으로 health check 진행
  3. Publisher 는 mosquitto 서버에 TCP 연결한 후 메세지 전송. 메세지를 전송 후 TCP 연결을 해제한다. 
  4. Publisher로부터 메세지를 전달 받은 mosquitto(broker) 서버는 등록되어 있는 Subscriber에게 메세지를 전송한다. (일치하는 topic에 한해서만)
    • 여기서 topic은 유니크 key와 같은 개념이다. 예를들어 Subscriber가 test 라는 topic만 구독하고 싶을 때 Publisher가 test topic을 지정하고 broker서버에 메세지를 보내면 broker서버는 test 토픽을 구독하는 Subscriber에게만 메세지를 전송하게 된다.


'서버' 카테고리의 다른 글

kubernetes 정리  (2) 2017.01.12
Kubernetes 설치  (6) 2017.01.12
Docker 정리  (2) 2017.01.04
리눅스 컨테이너 (LXC)  (0) 2017.01.04
tomcat 구동 시 /dev/random 블로킹 이슈  (6) 2016.08.25
Nginx  (0) 2016.07.15
Apache worker 파일에 template 적용하기  (0) 2016.01.22
tomcat7 소스 빌드  (0) 2015.09.07