Class SubscriptionManagerBase<TEvent, TSubscription>
Abstract base class for managing event subscriptions with health monitoring. Provides common subscription management, broadcasting, and cleanup functionality.
public abstract class SubscriptionManagerBase<TEvent, TSubscription> where TSubscription : class
Type Parameters
TEventThe type of events to broadcast.
TSubscriptionThe type of subscription handles.
- Inheritance
-
SubscriptionManagerBase<TEvent, TSubscription>
- Derived
- Inherited Members
Constructors
SubscriptionManagerBase(ILogger)
protected SubscriptionManagerBase(ILogger logger)
Parameters
loggerILogger
Fields
_logger
protected readonly ILogger _logger
Field Value
_subscriptions
protected readonly ConcurrentDictionary<string, ConcurrentDictionary<string, TSubscription>> _subscriptions
Field Value
- ConcurrentDictionary<string, ConcurrentDictionary<string, TSubscription>>
Methods
BroadcastAsync(string, TEvent, CancellationToken)
Broadcasts an event to all subscriptions for a topic.
public Task BroadcastAsync(string topic, TEvent evt, CancellationToken cancellationToken)
Parameters
topicstringThe topic to broadcast to.
evtTEventThe event to broadcast.
cancellationTokenCancellationTokenThe cancellation token for the broadcast.
Returns
- Task
A task that completes when all event sends have finished.
GetIdleTimeout(TSubscription)
Gets the idle timeout for a subscription.
protected abstract TimeSpan GetIdleTimeout(TSubscription subscription)
Parameters
subscriptionTSubscriptionThe subscription to get the timeout for.
Returns
- TimeSpan
The idle timeout duration.
GetSubscriptionCount(string)
Gets the number of subscriptions for a specific topic.
public int GetSubscriptionCount(string topic)
Parameters
topicstringThe topic name.
Returns
- int
The count of subscriptions for the topic.
GetSubscriptionKey(TSubscription)
Gets the subscription key for a subscription.
protected abstract string GetSubscriptionKey(TSubscription subscription)
Parameters
subscriptionTSubscriptionThe subscription to get the key for.
Returns
- string
The subscription key string.
GetTotalSubscriptionCount()
Gets the total number of subscriptions across all topics.
public int GetTotalSubscriptionCount()
Returns
- int
The total subscription count.
SendEventAsync(TSubscription, TEvent, CancellationToken)
Sends an event to a subscription.
protected abstract Task SendEventAsync(TSubscription subscription, TEvent evt, CancellationToken cancellationToken)
Parameters
subscriptionTSubscriptionThe subscription to send to.
evtTEventThe event to send.
cancellationTokenCancellationTokenThe cancellation token.
Returns
Subscribe(TSubscription)
Creates a subscription for a topic and returns a unique subscription ID.
public string Subscribe(TSubscription subscription)
Parameters
subscriptionTSubscriptionThe subscription handle containing connection details.
Returns
- string
A unique subscription identifier.
Unsubscribe(string, string)
Removes a subscription by its key and ID.
public void Unsubscribe(string subscriptionKey, string subscriptionId)