Class TopicStats

java.lang.Object
com.loomcache.server.topic.TopicStats

public final class TopicStats extends Object
Thread-safe statistics for a distributed topic.

Tracks:

  • Publish count: Total number of messages published
  • Subscribe count: Total number of subscriptions created
  • Unsubscribe count: Total number of subscriptions removed
  • Messages delivered: Total messages successfully delivered
  • Messages failed: Total messages that failed delivery
  • Average delivery latency: Measured in nanoseconds

Uses LongAdder for efficient concurrent updates with minimal contention. All methods are thread-safe and non-blocking.

  • Constructor Details

    • TopicStats

      public TopicStats()
  • Method Details

    • recordPublish

      public void recordPublish()
      Increment publish count.
    • recordSubscribe

      public void recordSubscribe()
      Increment subscribe count.
    • recordUnsubscribe

      public void recordUnsubscribe()
      Increment unsubscribe count.
    • recordDelivery

      public void recordDelivery(long latencyNanos)
      Record successful message delivery with latency.
      Parameters:
      latencyNanos - The time taken to deliver the message in nanoseconds (must be non-negative)
      Throws:
      IllegalArgumentException - if latencyNanos is negative
    • recordFailure

      public void recordFailure()
      Record failed message delivery.
    • getPublishCount

      public long getPublishCount()
      Get total publish count.
      Returns:
      The number of times publish() was called
    • getSubscribeCount

      public long getSubscribeCount()
      Get total subscribe count.
      Returns:
      The total number of subscriptions created
    • getUnsubscribeCount

      public long getUnsubscribeCount()
      Get total unsubscribe count.
      Returns:
      The total number of subscriptions removed
    • getMessagesDelivered

      public long getMessagesDelivered()
      Get total messages delivered.
      Returns:
      The number of messages successfully delivered
    • getMessagesFailed

      public long getMessagesFailed()
      Get total messages failed.
      Returns:
      The number of messages that failed delivery
    • getAvgDeliveryLatencyNanos

      public long getAvgDeliveryLatencyNanos()
      Get average delivery latency in nanoseconds.
      Returns:
      The average delivery latency, or 0 if no deliveries have occurred
    • reset

      public void reset()
      Reset all statistics to zero.