2014-11-13 9 views
0

지금까지 내가 이해, 당신 subscribed 특정 QoStopic A를, 가입자가 QoS 수준과 같거나 항목을 게시에 명시된 QoS에 아래로 MQTT 브로커에 의해 제공되는 topic에서 메시지 만 표시됩니다. 즉내 메시지가 MQTT-broker에 의해 다운 그레이드되고 있는데, 무엇 때문에?

topic = news하기 위해, exampe를 들어, 가입하고 QoS = 1으로, 그는이와 topic = newsQoS = 1 OR 0

I subscribed으로 topic = news 아래의 모든 published 메시지를 볼 수있을 것이다 클라이언트 QoS = 0topicQoS = 2으로 게시되었는데 broker에 연결했을 때 게시 된 메시지는 QoS = 0이고 두 번째로는 동일한 주제를 게시했지만 QoS = 1으로 게시했습니다. QoS = 0으로 구독하면 받은 편지함 에세지가 아니라 QoS = 0.

따라서 QoS 레벨이 무엇이든간에 메시지가 수신되지만 QoS은 "다운 그레이드"되어 있으므로 위험 요소는 무엇입니까? 설명 할 수있는 사람이 있습니까? !!

+1

어떤 브로커를 사용하고 있습니까? 하지만 귀하의 이해가 잘못되었다고 생각합니다. QOS가 일치하지 않으면 메시지가 필터링되지 않습니다. 브로커는 항상 메시지 전달을 시도 할 것이고 QOS는 브로커가 메시지를 전달하는 데 얼마나 힘든지 제어합니다. IIRC는 가입자 QOS가 지배적입니다 (메시지가 브로커에게 전달된다고 가정) – hardillb

+0

안녕하세요, 고맙습니다. 나는 모스 킷토를 보내고있다. – LetsamrIt

답변

1

가입 할 때 브로커에게 "메시지를 받고 싶은 최대 QoS는 X입니다"라고 말합니다. 즉, 더 높은 QoS로 가입 한 주제에 메시지가 오면 사용자를 위해 다운 그레이드됩니다. 다른 클라이언트는 영향을받지 않습니다. 바라건대 아래의 표는 당신을 위해 이것을 정리합니다.

Subscription QoS | Message QoS | Delivered QoS 
=================|=============|============== 
     0   |  0  |  0 
     0   |  1  |  0 
     0   |  2  |  0 
       |    | 
     1   |  0  |  0 
     1   |  1  |  1 
     1   |  2  |  1 
       |    | 
     2   |  0  |  0 
     2   |  1  |  1 
     2   |  2  |  2 
+0

그는 고맙다. 이 테이블은 명확하고 정확하게 mqtt rotoco와 사양을 이해하기 위해 테스트를 수행 할 때받은 것을 보여줍니다. 내 메시지가 다운 그레이드되면 불이익이 있습니까? – LetsamrIt

+0

글쎄요 - 관심있는 서브 스크립 션 레벨이라고 말씀하셨습니다. 낮은 Qos가 당신에게 문제가된다면 더 높은 레벨에서 구독해야합니다. – ralight