Class MessageTtlManager
- Namespace
- DotCompute.Core.Messaging
- Assembly
- DotCompute.Core.dll
Manages message TTL enforcement and expiration handling.
public sealed class MessageTtlManager : IMessageTtlManager, IAsyncDisposable
- Inheritance
-
MessageTtlManager
- Implements
- Inherited Members
Constructors
MessageTtlManager(ILogger<MessageTtlManager>, TimeSpan?, TimeSpan?)
Creates a new message TTL manager.
public MessageTtlManager(ILogger<MessageTtlManager> logger, TimeSpan? checkInterval = null, TimeSpan? defaultTtl = null)
Parameters
loggerILogger<MessageTtlManager>Logger for diagnostics.
checkIntervalTimeSpan?How often to check for expired messages. Default: 1 second.
defaultTtlTimeSpan?Default TTL for messages without explicit TTL. Default: 30 seconds.
Properties
ExpiredCount
Gets the number of messages that have expired while being tracked.
public long ExpiredCount { get; }
Property Value
TrackedCount
Gets the number of messages currently being tracked.
public int TrackedCount { get; }
Property Value
Methods
CancelTracking(Guid)
Stops tracking a message.
public bool CancelTracking(Guid trackingId)
Parameters
trackingIdGuidThe tracking ID from TrackAsync<TMessage>(TMessage, Func<TMessage, Task>, CancellationToken).
Returns
- bool
True if tracking was cancelled.
DisposeAsync()
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources asynchronously.
public ValueTask DisposeAsync()
Returns
- ValueTask
A task that represents the asynchronous dispose operation.
GetRemainingTtl<TMessage>(TMessage)
Gets the remaining TTL for a message.
public TimeSpan? GetRemainingTtl<TMessage>(TMessage message) where TMessage : IRingKernelMessage
Parameters
messageTMessageThe message to check.
Returns
- TimeSpan?
Remaining time, or TimeSpan.Zero if expired, or null if no TTL.
Type Parameters
TMessageThe message type.
IsExpired<TMessage>(TMessage)
Checks if a message has expired.
public bool IsExpired<TMessage>(TMessage message) where TMessage : IRingKernelMessage
Parameters
messageTMessageThe message to check.
Returns
- bool
True if the message has expired.
Type Parameters
TMessageThe message type.
TrackAsync<TMessage>(TMessage, Func<TMessage, Task>, CancellationToken)
Tracks a message for TTL enforcement.
public Task<Guid> TrackAsync<TMessage>(TMessage message, Func<TMessage, Task> onExpired, CancellationToken cancellationToken = default) where TMessage : IRingKernelMessage
Parameters
messageTMessageThe message to track.
onExpiredFunc<TMessage, Task>Callback when the message expires.
cancellationTokenCancellationTokenCancellation token.
Returns
Type Parameters
TMessageThe message type.
Events
MessageExpired
Occurs when a tracked message expires.
public event EventHandler<MessageExpiredEventArgs>? MessageExpired