Короткий ответ: нет. Ваша модель MQTT неверна.
MQTT не является моделью запроса / ответа * например, как HTTP, это модель обмена сообщениями публикации / подписки (публикации / подписки). В модели pub / sub производитель данных публикует сообщение для topi c, число подписчиков на эту topi c может быть где угодно, от 0 до N, у издателя нет возможности узнать, сколько существует подписчиков (и на самом деле не должно волновать).
Это означает, что все, что вам нужно сделать, чтобы получить данные, это подписаться на предоставленную топику c (в данном случае app/26
), и когда появятся новые данные, они будут доставлено вашему клиенту.
Существуют варианты, чтобы при подписке вы всегда получали последнее опубликованное сообщение. Это делается с помощью производящего клиента, устанавливающего оставшийся бит в заголовке сообщения, который заставит посредника удержать это сообщение и доставить его сначала всем клиентам, когда они подписываются на топи c. Следующее сообщение с этим битом, установленным в этой топике c, заменит предыдущее. Но это контролируется клиентом, производящим данные, а не потребителем.
* Вы можете реализовать запрос / ответ, используя отдельные темы, и MQTT v5 имеет дополнительный заголовок для указания ответа топи c. Но требует, чтобы клиент, производящий данные, ожидал получить запрос на данную топи c и был бы способен ответить на поставляемую топи c.