Здесь главное отметить, что экземпляр SampleListener
, установленный на conn
при вызове set_listener
, будет вызываться асинхронно при поступлении сообщения в очередь.Другими словами, клиент не будет просто ждать / блокировать, пока не прибудет сообщение.Следовательно, sleep
должен быть вызван, чтобы потребитель оставался в живых в течение некоторого времени ожидания сообщения.Если сообщение приходит во время этого 10
второго окна, то SampleListener
получит его и распечатает сообщение (то есть, используя print(msg)
).Если сообщение не поступает в очередь, то SampleListener
не будет вызвано, и приложение просто прекратит работу.
disconnect
в конце - это просто хорошее управление ресурсами.Как правило, это плохая практика - завершать работу приложения без очистки созданных им ресурсов (например, соединений).Если disconnect
является , а не , и приложение завершает работу, то брокер будет вынужден в конечном итоге закрыть само соединение и очистить все ресурсы на стороне сервера.
Если on_message
требует большечем 10 секунд (т.е. продолжительность sleep
) Я не уверен, что произойдет.Я рекомендую вам попробовать и посмотреть.