우분투에서 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();
}
}
[동작 원리]
- mosquitto 서버 구동
- Subscriber 등록
- 등록이 되면 mosquitto(broker) 서버와 TCP 커넥션을 맺고 유지한다.
- 커넥션을 유지하는 동안 지속적으로 health check 진행
- Publisher 는 mosquitto 서버에 TCP 연결한 후 메세지 전송. 메세지를 전송 후 TCP 연결을 해제한다.
- 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 |