MQTT QoS seviyesini istemciye ulaşıncaya kadar korumanın bir yolu var mı?


9

MQTT, gönderenlerin bir mesajın alınıp alınmayacağı (ve kopyalara izin verilip verilmeyeceği) konusunda belirli garantiler sağlayan bir Hizmet Kalitesi (QoS) düzeyi belirlemelerine olanak tanır . HiveMQ'nun bu makalesi, daha düşük QoS seviyesine sahip bir istemcinin, gönderenin istediği garantilerle mesajı alamayacağı, eski sürüme geçme sorununu vurgular :

Daha önce de belirtildiği gibi, bir yayıncı ve abone olan müşteri arasındaki QoS akışları iki farklı şeydir ve QoS farklı olabilir. Bu, QoS seviyesinin bir mesaj yayınlayan A müşterisinden ve yayınlanan mesajı alan B müşterisinden farklı olabileceği anlamına gelir. Gönderen ve aracı arasında QoS gönderen tarafından tanımlanır. Aracı iletiyi tüm abonelere gönderdiğinde, abonenin B istemcisinden QoS'si kullanılır.

MQTT, bu eski sürüme geçişin kabul edilemez olduğunu ve iletinin , orijinal gönderenin istediği QoS kullanılarak teslim edilmesi gerektiğini belirten bir yol sunuyor mu? Mesajı göndermeden önce hem gönderenin hem de alıcının istenen QoS ayarına sahip olduğundan emin olmak için tek seçenek var mı?

Yanıtlar:


8

MQTT ile çalışırken hatırlanması gereken bir şey, "hem abonelerin hem de yayıncıların MQTT istemcileri olarak kabul edildiğidir".

Dediğim gibi QoS yayınlama sırasında diğer müşterilerle değil, tamamen broker (B) ile ilgilidir. Abonelerin (S) yayıncının (P) yayınladığı her şeyi almasını sağlamak için QoS 1'i kullanmanız gerekir.

Vakalara bakalım: P - QoS 0 ile gönderir, bu da her mesajın B'de en az bir kez (bir kez veya sıfır) olacağı anlamına gelir. Bu durumda S, QoS 0 ile B'ye abone olursa - komisyoncu (B) sonunda S'ye ulaşacak bir mesaj aldığında bile garanti yoktur. QoS 1 - S kesinlikle alacaktır QoS 2 - S aracı birden çok ileti almayacak

Aynı şeyi diğer QoS ile yaparsak. QoS 1 her şeyin üstesinden geldiğinden aboneler için QoS1'in tüm seviyelerde iyi çalıştığını öğreneceğiz.


MQTT aynı şey için herhangi bir endikasyon sağlamaz, ancak abone olurken QoS 1'i kullanarak gönderenin QoS'sine ulaşabiliriz.


4

QoS 1 veya 2 seviyeleri yalnızca yayınlanan mesajın aracıya ulaşmasını sağlar. Abone QoS 1 veya 2, brokere mesajın alınmasını sağlar.

1 veya 2 ile yayınlamak, kimsenin dinlediği anlamına gelmez.

Kullanım durumunuz nedir?


3
Cevaplarda soru sormayın. Bir şey net değilse önce bir yorum bırakın.
Bence Kaulics

Message Broker'a veri gönderen bir sensöre sahip olabileceğiniz, ardından bir bilgisayara veya QoS garantilerinin tutulması hayati önem taşıyan başka bir işlemciye yönlendirilebileceğiniz herhangi bir durumu merak ediyorum .
Aurora0001
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.