To achieve reliability or zero message loss, you must design applications that can capture the state of an instance. For transactional support, like Java Message Service (JMS), Virtual machine (VM), etc., the built-in support gives reliable messaging.