Book a consultation

Solace Messaging Explained: Topics, Queues and Delivery Modes

Solace Message Replay: How the Replay Log Works and When to Use It

Solace message replay explained: the per-VPN replay log, start points, what happens to a queue during replay, retention sizing and the documented limits.

Vladimir Romanov


Solace message replay lets the Solace Event Broker keep a record of guaranteed messages in a replay log and send them again, in their original order, to a queue or topic endpoint that needs them. Solace’s replay documentation lists the typical reasons: recovering an application that corrupted its data, correcting a topic-to-queue mapping that was set up wrong, giving a late-joining application the history it missed, and event sourcing or on-demand analytics. A replay can start from the oldest message held, from a date and time, or after a specific message ID, and the consumer then continues with live messages without any change on its side.

This page explains the mechanism, the use cases and the limits. It belongs to the Solace messaging model in the Solace cluster.

How Solace message replay works

The Solace replay log, its start points and what happens during a replay A replay log runs along a time axis from the oldest retained message to now. The oldest messages are trimmed once the log reaches 90% of its quota. Three start points are marked: from the oldest message, from a date and time, and after a replication group message ID. Below, the replay sequence: first the endpoint is emptied and flows are unbound, then the log is replayed from the chosen start point, then live messages that arrived during replay are delivered once the replay catches up. oldest trimmed at 90% of quota newest replay log for one Message VPN, in publish order live from oldest from a date and time after a message ID 1 Endpoint emptied, flows unbound, APIs rebind 2 Log replayed from the chosen start point 3 Live messages logged, delivered once replay catches up Retention is set by size (the log's max-spool-usage), not by days. Rate and message size decide how far back you can go.
Replay is a deliberate operation on one endpoint: it clears what is waiting, plays history from a chosen point, then joins the live stream. How far back it can reach depends on how big you made the log.

The log. Each Message VPN can have a replay log. By default it stores all guaranteed messages, and administrators can apply topic filters, “including wildcard subscriptions and topic exceptions”, to log only what is worth keeping. It is meant for guaranteed messages; per the docs, “Direct messages can be logged only by promoting them”.

Retention is a size quota. The log has a max-spool-usage in megabytes. “Messages are retained in the replay log until its spool usage reaches 90% of its configured quota, after which the oldest messages are removed.”

Who starts it. “Message replay can be initiated from an event broker management interface or from a client application using the Solace Messaging APIs”, and it works for any consumer protocol, “including AMQP, MQTT, REST/WebHooks, and Solace Messaging APIs”.

What happens to the endpoint. The playback documentation is precise:

  1. “All messages stored on an endpoint are deleted prior to replay, and bound flows are unbound.” The Solace APIs rebind automatically.
  2. Messages from the log are delivered from the chosen start point.
  3. Live messages for that endpoint are not spooled to it directly; they go into the replay log and “are replayed to the endpoint when the replay catches up to them”.
  4. If the requested date is earlier than the log’s creation date, “the replay fails and the replay state of the endpoint is set to failed”.

Use cases for Solace message replay in a plant

SituationStart pointWhat replay gives you
A new consumer, such as a quality analytics service, goes liveFrom oldest, or a dateThe history it missed, then the live stream, through one queue
A consumer wrote bad data after a faulty deploymentAfter the last good message ID, or the deployment timeA clean re-run of everything after the fault
A queue subscription was missing a topic for two daysFrom the date the mistake was madeThe messages that never reached the queue
Rebuilding a read model or a cacheFrom oldestState rebuilt from events, the event sourcing idea

An illustrative case. An MES integration release on Tuesday mis-mapped scrap reasons, and the error is found on Thursday. The team fixes the code, deletes the bad records, and replays the integration’s queue from Tuesday’s deployment time. Two days of scrap events flow through again, then the queue continues with live data. Without replay, the alternatives are asking every line to re-enter data or writing a one-off reconciliation against the historian.

Sizing Solace message replay retention

Tall stacks of paper files and folders piled on desks in an office
Replay only reaches as far back as the archive goes. The quota you set decides whether that is two hours or two weeks.

Because retention is by size, convert it to time before relying on it:

  1. Measure the logged traffic. Peak messages per second multiplied by average size, for only the topics the log filters in.
  2. Choose the recovery window. How long could a bad deployment go unnoticed? For many plants, a long weekend plus a day is a realistic answer.
  3. Calculate the quota. Rate times size times window, then divide by 0.9, because trimming starts at 90%.
  4. Check the spool budget. The log shares the broker’s spool with queues. The free Standard Edition caps the spool at 800 GB and is marked not production deployable; Enterprise Edition goes to 6 TB per the edition table.
  5. Filter aggressively. High-rate live values that a historian already keeps rarely belong in the replay log.

Replay is not an archive. For months of history, a historian, a data lake or a streaming log is the better home. The difference between a broker’s replay log and a streaming platform’s retained log is covered on Solace vs Kafka.

Solace message replay compared with other ways to re-read history

Replay is one of several places a plant can recover past events from. They differ in who controls the rewind and how far back it goes.

OptionWho rewindsHow far backBest for
Solace replay logAn administrator or the client, per endpoint, on requestAs far as the size quota allowsRecovery after a fault, late joiners, fixing a missed subscription
Streaming log (Kafka and similar)Each consumer group, by moving its offsetPer-topic retention, often days to foreverAnalytics, many independent re-reads, stream processing
HistorianA query against stored valuesYearsProcess values and trends, not business events
Source system re-exportThe owning team, by handWhatever the source keptLast resort; slow and often incomplete

In our view the options combine rather than compete. Many architectures keep the broker’s replay log short, a few days sized for operational recovery, and send the same events to a streaming platform or lake for long retention. The broker then handles the “a consumer broke on Tuesday” case quickly and locally, while the analytics team re-reads months of history without touching production queues. The Kafka vs MQTT guide explains the plant-edge, streaming-core pattern this fits into, and our article on keeping data local in manufacturing covers why the short, on-site copy still matters.

Where it gets hard

  • Partitioned queues cannot be replayed. The docs state it twice. If you need ordered scale-out and replay, see partitioned and last value queues and plan a separate recovery path.
  • Replay and replication do not combine. Solace states “Replication with message replay isn’t supported”, because messages logged at the active site may not reach the standby site’s log. Factor that into the HA and DR design.
  • Message IDs are local. In an event mesh, “a given message is assigned a different replication group message ID in each replication group”, so an ID from one broker is meaningless on another.
  • Replay empties the queue. Anything waiting is deleted first. Let the consumer drain, or accept that those messages will come back from the log.
  • Duplicates. Replaying from a time rather than an exact ID will usually resend messages already processed. Consumers must be idempotent, as on any guaranteed flow described in queues and guaranteed messaging.
  • Selectors. Solace advises against replaying to an exclusive queue whose active consumer uses an egress selector.

Back to the messaging model or the Solace hub.

Frequently asked questions

What is message replay in Solace?

Message replay lets a Solace event broker store guaranteed messages in a replay log for each Message VPN, then deliver them again to a queue or topic endpoint on request. An administrator or a client application can start a replay from the oldest message in the log, from a date and time, or after a specific replication group message ID. Replayed messages are followed by live ones without the consumer changing anything.

How long does Solace keep messages for replay?

Retention is set by size, not by time. The replay log has a max-spool-usage quota in megabytes, and once usage reaches 90% of that quota the oldest messages are removed. How many days that covers depends on message rate and size, so calculate it from your peak traffic and check it again whenever new publishers are added.

What happens to messages already on a queue when replay starts?

They are deleted. Solace's documentation states that all messages stored on an endpoint are deleted prior to replay, and bound flows are unbound; the Solace messaging APIs then rebind automatically. Live messages arriving during the replay go into the replay log and reach the endpoint when the replay catches up, so a consumer sees history first and then the live stream.

Can every Solace queue be replayed?

No. Replay can be started on a non-partitioned queue or a topic endpoint, but Solace states it is not supported for partitioned queues. Solace also advises against replaying to an exclusive queue whose active consumer uses an egress selector. Direct messages are only in the log if they were promoted, because the replay log is designed for guaranteed messages.

Is Solace message replay the same as Kafka retention?

They solve overlapping problems differently. Kafka keeps a log per topic partition, and consumers re-read by moving their offset at any time. Solace keeps one replay log per Message VPN and replays into a queue on request, emptying it first. Solace replay suits recovery and late joiners; long-term retention for analytics is usually better kept in a streaming platform, lake or historian.

References and further reading

  1. Message Replay Configuration · SolaceThe replay log, start points, use cases and limits.
  2. Playing Back a Replay Log · SolaceWhat happens to the endpoint and to live messages during replay.
  3. Guaranteed Messages · Solace
  4. Apache Kafka Documentation: Design · Apache Software FoundationThe log-retention model replay is often compared with.
  5. What do you mean by Event-Driven? · Martin FowlerEvent sourcing and why re-reading history matters.

← Messaging Model

Have a project that needs technical ownership?

Send us the situation. If it is not something we should take on, we will say so.