Request all published topics
The short answer is no, a broker doesn't need keep a list of what topic messages have been published to, it just checks the list of topics each client is subscribed to when a message arrives.
Also if it did keep such a list, how would you decide when to remove a topic from the list, a message may only ever be sent once to that particular topic, would you keep that topic on the list forever?
If you send "EVERY" message to broker with retain message = True, then you can:
- Connects to server with subscribe '#'
- Check all the retain message and their topic (save these published topics)
- Unsubscribe '#'
- Subscribe every topics you got
Manageability of MQTT brokers is very immature at this point. I also don't know of a way to retrieve the list of published topics from any broker. But, there are standardization efforts, eg. with the $SYS topic tree https://github.com/mqtt/mqtt.github.io/wiki/SYS-Topics.
Other brokers are manageable via SNMP, eg. MessageSight https://www.ibm.com/support/knowledgecenter/en/SSCGGQ_1.2.0/com.ibm.ism.doc/Monitoring/admin00008_.html . It can list the topics in its WEB interface, but I don't know of a programmatic way to retrieve them.