MQTT не работает таким образом.
Здесь необходимо учитывать ряд факторов.
Сохраненные сообщения . Похоже, что сообщения, которые вы получаете, имеют установленный бит в наборе заголовков. Это означает, что посредник будет удерживать последнее сообщение с установленным битом в любой теме, в которой он публикуется, затем, когда клиент подписывается на эту тему, он всегда доставляет это последнее сообщение клиенту до того, как поступят новые сообщения. Это всего лишь одно сообщение, больше не может быть.
Очередь сообщений . Если клиент подписывается на тему со значением, превышающим QOS 0, а затем отключается. Когда он переподключается, если для флага clean_session установлено значение false, и клиент повторно подписывается на ту же тему, тогда брокер доставляет все сообщения, отправленные этой теме, пока клиент был в автономном режиме. Опять же, это будут все пропущенные сообщения, а не только последние 5.
Как @Weedoze упомянул в своем комментарии, одно из возможных решений - это подписать другой клиент на ту же тему, и каждый раз, когда сообщение публикуется, используйте его для обновления одного сообщения, содержащего последние 5 сообщений. опубликовано в отдельной теме с установленным битом true. Затем клиент может подписаться на тему «история» и «живая» тема.