Link to the tutorial explaining the use of SIM7600 GSM Modem having MQTT stack, which can be used to make IoT projects work over GSM Modem easily. The MQTT stack can be called using simple AT commands.
About modem: SIM7600 is a complete multi-band LTE-FDD/LTE-TDD/HSPA+/UMTS/EDGE/GPRS/GSM module solution in LCCtype which supports LTE CAT1up to 10Mbps for downlink and 5Mbps for uplink data transfer.
Subscribing: It is not required to listen for subscribed messages through TCP, instead, AT commands are used for making this task available in the modem firmware itself. So Serial event will be received whenever a new message arrives.
Publishing: The message and topic are fed to the SIM7600 Modem through AT commands, and the modem does the rest of the job.
Tutorial Link: MQTT AT commands with SIM7600 and Arduino for GSM IoT
Sample code for Arduino: Download link
MQTT Application Note: Download link