TsgcWSPClient_MQTT | MQTT Topics

Topics

MQTT에서 topic이라는 단어는 브로커가 연결된 각 클라이언트에 대해 메시지를 필터링하는 데 사용하는 UTF-8 문자열을 나타냅니다. topic은 하나 이상의 topic 레벨로 구성됩니다. 각 topic 레벨은 슬래시(topic 레벨 구분자)로 구분됩니다

 

myHome / groundfloor / livingroom / temperature

 

메시지 큐와 비교할 때 MQTT 토픽은 매우 경량입니다. 클라이언트는 게시하거나 구독하기 전에 원하는 토픽을 생성할 필요가 없습니다. 브로커는 사전 초기화 없이 유효한 각 토픽을 수락합니다. 각 토픽은 최소 1자를 포함해야 하며 토픽 문자열은 빈 공백을 허용합니다. 토픽은 대소문자를 구분합니다.

 

 

WildCards

클라이언트가 토픽을 구독할 때, 게시된 메시지의 정확한 토픽을 구독하거나 와일드카드를 사용하여 여러 토픽을 동시에 구독할 수 있습니다. 와일드카드는 토픽 구독에만 사용할 수 있으며 메시지 게시에는 사용할 수 없습니다. 두 가지 종류의 와일드카드가 있습니다: _single-level과 _multi-level.

 

Single Level: +

이름에서 알 수 있듯이 단일 수준 와일드카드는 하나의 토픽 수준을 대체합니다. 더하기 기호는 토픽에서 단일 수준 와일드카드를 나타냅니다.

 

myHome / groundfloor / + / temperature

 

모든 topic은 와일드카드 대신 임의의 문자열을 포함하는 경우 단일 수준 와일드카드가 있는 topic과 일치합니다. 예를 들어 _myhome/groundfloor/+/temperature에 대한 구독은 다음 결과를 생성할 수 있습니다:

 

YES => myHome / groundfloor / livingroom / temperature

YES => myHome / groundfloor / kitchen / temperature

NO => myHome / groundfloor / livingroom / brightness

아니요 => myHome / firstfloor / livingroom / temperature

NO => myHome / groundfloor / kitchen / fridge / temperature

 

Multi Level: #

다중 수준 와일드카드는 많은 토픽 수준을 다룹니다. 해시 기호는 토픽에서 다중 수준 와일드카드를 나타냅니다. 브로커가 일치하는 토픽을 결정하려면 다중 수준 와일드카드를 토픽의 마지막 문자로 배치하고 앞에 슬래시를 붙여야 합니다.

 

myHome / groundfloor / #

 

YES => myHome / groundfloor / livingroom / temperature

YES => myHome / groundfloor / kitchen / temperature

YES => myHome / groundfloor / kitchen / brightness

NO => myHome / firstfloor / kitchen / temperature

 

클라이언트가 멀티 레벨 와일드카드로 토픽을 구독하면, 토픽이 얼마나 길거나 깊든 관계없이 와일드카드 문자 앞의 패턴으로 시작하는 토픽의 모든 메시지를 수신합니다. 멀티 레벨 와일드카드만 토픽으로 지정하면 (_#), MQTT 브로커로 전송되는 모든 메시지를 수신합니다.