I've seen examples of IoT devices pushing data onto the tangle, such as open source Ruuvi tag, but how do IoT devices listen for events and MAM subscriptions on the tangle. Would the IoT device have to continuously make findTransaction calls to the API host, in intervals decided by the programmer (e.g. every 10 seconds)?
Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.
The Development Roadmap mentions IoT-Devices in the following manner:
This client is our highest priority at the moment, as we are currently porting IRI over to C++ and plan to continue core development in this language. Unlike Java it does not require a Virtual Machine installed on the devices in order to to run code and it compiles to machine code in real time, making it a lot more suitable for these resource restrained IoT devices. It’s also one of the most supported and typed languages in the world.
The GitHub-Repository does not contain a C++ client, which would be that "highest priority client".
Using such a Message Broker is an acceptable solution, since it's much more troubling to update the firmware when changes need to be done (new seed, change addresses and so on) than the code on the broker. So, for a beginning, this would be the way to go.