Per-channel outbound rate limiting for Slack Web API calls.
Slack limits chat.postMessage to roughly one message per second per
channel; bursts beyond that get 429s and dropped messages. This module
fronts outbound calls with one lightweight GenServer per channel (see
Slink.Rate.Channel), each draining a FIFO queue no faster than the
configured interval. Different channels drain concurrently.
Calls are fire-and-forget: failures are logged, not returned. Use
Slink.API directly if you need the response.
Configuration
config :slink, :rate_interval_ms, 1_000— minimum gap between sends on a single channel (default 1000ms).config :slink, :rate_max_queue, 1_000— per-channel queue cap; beyond it the oldest queued messages are dropped (default 1000).config :slink, :rate_idle_stop_ms, 600_000— a channel worker with nothing to do for this long stops itself (default 10 minutes), so posting to many channels doesn't accumulate idle workers.
Summary
Functions
Queue any Web API method targeting channel, rate-limited per channel.
Queue a chat.postMessage for channel, rate-limited per channel.