Package org.apache.synapse.transport.http.conn

# Class ReplayDispatcher

java.lang.Object
org.apache.synapse.transport.http.conn.ReplayDispatcher

public class ReplayDispatcher extends Object
Singleton manager class responsible for buffering replay data and asynchronously writing it to a configured ReplayDataWriter. A dedicated background thread consumes records from the queue and writes them using the ReplayDataWriter implementation configured dynamically through properties. This class is thread-safe and supports graceful shutdown by closing the writer and stopping the background thread.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addReplayRecord(String messageId, Map<String,Object> metadata, byte[] data)`
  Adds a replay record to the internal buffer queue for later asynchronous writing.
  `void`
  `addReplayRecord(ByteBuffer dataBuffer, int byteWritten, String messageId, Map<String,Object> metadata)`
  Convenience method to wrap data in ByteBuffer and delegate to addReplayRecord(String, byte[], Map).
  `static ReplayDispatcher`
  `getInstance()`
  Returns the singleton instance of the ReplayDispatcher, creating it if necessary.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Method Details

  - ### getInstance

    public static ReplayDispatcher getInstance()
    Returns the singleton instance of the ReplayDispatcher, creating it if necessary. Dynamically instantiates the writer class configured via properties. Throws an IllegalStateException for missing or invalid configuration.
    Returns:
      singleton instance of this dispatcher

  - ### addReplayRecord

    public void addReplayRecord(String messageId, Map<String,Object> metadata, byte[] data)
    Adds a replay record to the internal buffer queue for later asynchronous writing. If the queue is full, drops the message and logs drop occurrences at configured frequency.
    Parameters:
      `messageId` - unique identifier of the message
      `metadata` - metadata map describing contextual information of the message
      `data` - raw byte array of the message content

  - ### addReplayRecord

    public void addReplayRecord(ByteBuffer dataBuffer, int byteWritten, String messageId, Map<String,Object> metadata)
    Convenience method to wrap data in ByteBuffer and delegate to addReplayRecord(String, byte[], Map).
    Parameters:
      `dataBuffer` - byte buffer containing the raw message data
      `byteWritten` - number of bytes written to the buffer
      `messageId` - unique message identifier
      `metadata` - metadata map for contextual information