Guaranteed Messages

Guaranteed Messaging is a message delivery mode offered by Solace PubSub+ that guarantees the delivery of a message between two applications even in cases where the receiving application is offline, or there is a failure of a piece of network equipment. Once a message broker has acknowledged receiving a Guaranteed message from a publisher, it is committed to delivering that message.

Guaranteed Messaging ensures that each published message is reliably delivered only once to a consuming client when its receipt is acknowledged by that consumer, and that messages are delivered in the order they are published. Solace PubSub+manages transient network outages, message broker outages, and client disconnections so that publishers can be assured that once a message is accepted by Solace PubSub+, it is delivered to recipients.

Two key points about Guaranteed Messaging:

  • Keeps messages that are tagged as persistent or non-persistent (rather than Direct) across message broker restarts by spooling them to persistent storage. Although a persistent delivery mode is typically used for Guaranteed messages, a non-persistent delivery mode is provided to offer compatibility with Java Message Service (JMS), and to allow the delivery mode of the messages to be modified to accommodate the persistence requirements of an endpoint or a client subscription when there is a topic match (refer to Topic Matching & Message Delivery Modes).
  • Keeps a copy of the message until successful delivery to all clients and downstream message brokers has been verified

To support Guaranteed Messaging, a message broker must have message spooling enabled, and a Solace PubSub+ appliance must also have an Assured Delivery Blade (ADB) installed.

Messages accepted by Solace PubSub+ through Guaranteed Messaging for delivery to clients are never lost, but might not get accepted if system resource limits are exceeded. If an ingress message cannot be received by Solace PubSub+ (for example, if the spool quota is exceeded), the publisher is not acknowledged, and the appropriate message broker statistic is incremented.