Ktistec::Topic
Inherits Reference < Object
A pub/sub topic.
Debouncing
Topics support provider-side debouncing for high-frequency subjects. When a subject is configured for debouncing, notifications are batched and delivered after a fixed time window instead of immediately.
Configure debounce using a regex pattern matching subject names:
Ktistec::Topic.configure_debounce(/\/actors\/[^\/]+\/notifications$/, 1.second)
Debounce configuration is in src/controllers/streaming.cr.
Note: Subject names can change at runtime (see .rename_subject).
For example, thread subjects change from object IRI to thread IRI.
Design patterns to match the category of possible names for
a subject.
Debounce behavior:
- First notification starts a timer
- Subsequent notifications during the window are queued
- When timer fires, queued values are delivered at once
- Subjects not matching any pattern are delivered immediately
Constants
Constructors
Class methods
Configures debounce for subjects matching pattern.
interval is the debounce window.
Returns the debounce interval for a subject, or nil.
Resets the topic class state.
Clears all subscriptions. Clears all subjects.
This is useful when testing. It should not be used in any other context!
Instance methods
Removes subjects that no longer belong to any topic.
Note: this method should only be called during garbage collection.
Notifies subscribers about updates.
Passes an optional value to each subscriber.
Does not block.
Subscribes to updates about the topic.
Yields all queued values.
Does not return unless the supplied block raises Stop, raises
an exception, or the channel is closed.
A timeout may be specified to ensure the block is called
periodically.