MQTT'de, topic kelimesi, broker'ın her bağlı istemci için mesajları filtrelemek üzere kullandığı bir UTF-8 dizesine atıfta bulunur. Konu, bir veya daha fazla konu seviyesinden oluşur. Her konu seviyesi bir eğik çizgi (konu seviyesi ayırıcı) ile ayrılır
myHome / groundfloor / livingroom / temperature
Bir mesaj kuyruğuyla karşılaştırıldığında, MQTT konuları çok hafiftir. İstemcinin, üzerine yayınlamadan veya abone olmadan önce istenen konuyu oluşturması gerekmez. Broker her geçerli konuyu önceden herhangi bir başlatma olmadan kabul eder. Her konunun en az 1 karakter içermesi gerektiğini ve konu dizesinin boş boşluklara izin verdiğini unutmayın. Konular büyük/küçük harfe duyarlıdır.
Bir istemci bir konuya abone olduğunda, yayınlanan bir mesajın tam konusuna abone olabilir veya birden fazla konuya aynı anda abone olmak için joker karakterler kullanabilir. Bir joker karakter yalnızca konulara abone olmak için kullanılabilir, bir mesaj yayınlamak için değil. İki farklı joker karakter türü vardır: _single-level ve _multi-level.
Adından da anlaşılacağı gibi, tek seviyeli bir joker karakter bir konu seviyesinin yerini alır. Artı sembolü, bir konuda tek seviyeli bir joker karakteri temsil eder.
myHome / groundfloor / + / temperature
Herhangi bir konu (topic), joker karakter yerine rastgele bir dize içeriyorsa, tek düzeyli joker karakterli bir konuyla eşleşir. Örneğin _myhome/groundfloor/+/temperature aboneliği aşağıdaki sonuçları üretebilir:
YES => myHome / groundfloor / livingroom / temperature
YES => myHome / groundfloor / kitchen / temperature
NO => myHome / groundfloor / livingroom / brightness
HAYIR => myHome / firstfloor / livingroom / temperature
HAYIR => myHome / groundfloor / kitchen / fridge / temperature
Çok seviyeli joker karakter birçok konu seviyesini kapsar. Diş sembolü, konuda çok seviyeli joker karakteri temsil eder. Broker'ın hangi konuların eşleştiğini belirlemesi için, çok seviyeli joker karakter konudaki son karakter olarak yerleştirilmeli ve önünde bir eğik çizgi bulunmalıdır.
myHome / groundfloor / #
YES => myHome / groundfloor / livingroom / temperature
YES => myHome / groundfloor / kitchen / temperature
YES => myHome / groundfloor / kitchen / brightness
NO => myHome / firstfloor / kitchen / temperature
Bir istemci bir topic'e çok seviyeli bir joker karakterle abone olduğunda, joker karakterden önceki desenle başlayan bir topic'in tüm mesajlarını alır, topic ne kadar uzun veya derin olursa olsun. Bir topic olarak yalnızca çok seviyeli joker karakteri belirtirseniz (_#), MQTT broker'a gönderilen tüm mesajları alırsınız.