Class EventRateLimiter

java.lang.Object
cloud.opencode.base.event.security.EventRateLimiter

public class EventRateLimiter extends Object
Event Rate Limiter 事件频率限制器

Rate limiter for controlling event publishing frequency.

用于控制事件发布频率的频率限制器。

Features | 主要功能:

  • Per-event-type rate limiting - 按事件类型频率限制
  • Sliding window algorithm - 滑动窗口算法
  • Configurable limits - 可配置的限制

Usage Examples | 使用示例:

EventRateLimiter limiter = new EventRateLimiter(100);
limiter.setLimit(HighFrequencyEvent.class, 1000);

if (!limiter.allowPublish(event)) {
    throw new EventSecurityException("Rate limit exceeded");
}

Security | 安全性:

  • Thread-safe: Yes (concurrent data structures) - 线程安全: 是(并发数据结构)
Since:
JDK 25, opencode-base-event V1.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
    EventRateLimiter(int defaultMaxPerSecond)
    Create rate limiter with default limit 使用默认限制创建频率限制器
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    Check if publishing is allowed 检查是否允许发布
    int
    getCurrentCount(Class<? extends Event> eventType)
    Get current count for an event type 获取事件类型的当前计数
    int
    Get the default max per second 获取默认每秒最大值
    void
    Reset all rate limits 重置所有频率限制
    void
    reset(Class<? extends Event> eventType)
    Reset rate limit for a specific event type 重置特定事件类型的频率限制
    void
    setLimit(Class<? extends Event> eventType, int maxPerSecond)
    Set rate limit for a specific event type 为特定事件类型设置频率限制

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • EventRateLimiter

      public EventRateLimiter(int defaultMaxPerSecond)
      Create rate limiter with default limit 使用默认限制创建频率限制器
      Parameters:
      defaultMaxPerSecond - default max events per second | 默认每秒最大事件数
  • Method Details

    • setLimit

      public void setLimit(Class<? extends Event> eventType, int maxPerSecond)
      Set rate limit for a specific event type 为特定事件类型设置频率限制
      Parameters:
      eventType - the event type | 事件类型
      maxPerSecond - max events per second | 每秒最大事件数
    • allowPublish

      public boolean allowPublish(Event event)
      Check if publishing is allowed 检查是否允许发布
      Parameters:
      event - the event to check | 要检查的事件
      Returns:
      true if allowed | 如果允许返回true
    • getCurrentCount

      public int getCurrentCount(Class<? extends Event> eventType)
      Get current count for an event type 获取事件类型的当前计数
      Parameters:
      eventType - the event type | 事件类型
      Returns:
      current count in the window | 窗口中的当前计数
    • getDefaultMaxPerSecond

      public int getDefaultMaxPerSecond()
      Get the default max per second 获取默认每秒最大值
      Returns:
      default max per second | 默认每秒最大值
    • reset

      public void reset()
      Reset all rate limits 重置所有频率限制
    • reset

      public void reset(Class<? extends Event> eventType)
      Reset rate limit for a specific event type 重置特定事件类型的频率限制
      Parameters:
      eventType - the event type | 事件类型