@@ -31,7 +31,8 @@ public interface IMessageQueue
3131/// Enqueues the specified message.
3232/// </summary>
3333/// <param name="message">The message to enqueue.</param>
34- void Enqueue ( Message message ) ;
34+ /// <param name="cancellationToken">Cancellation token.</param>
35+ ValueTask Enqueue ( Message message , CancellationToken cancellationToken ) ;
3536
3637/// <summary>
3738/// Removes and returns the next message from the queue asynchronously.
@@ -62,7 +63,7 @@ public interface IMessageQueue
6263public abstract class BaseMessageQueue ( ) : BaseOrderedChannel < long , Message , PriorityQueue < long , Message > > ( new ( ( p1 , p2 ) => ( p1 - p2 ) . Abs ( ) ) , - 1 ) , IMessageQueue
6364{
6465/// <inheritdoc />
65- public abstract void Enqueue ( Message message ) ;
66+ public abstract ValueTask Enqueue ( Message message , CancellationToken cancellationToken ) ;
6667}
6768
6869/// <summary>
@@ -78,12 +79,12 @@ public MessageByLocalTimeQueue()
7879}
7980
8081/// <inheritdoc />
81- public override void Enqueue ( Message message )
82+ public override ValueTask Enqueue ( Message message , CancellationToken cancellationToken )
8283{
8384if ( message is null )
8485throw new ArgumentNullException ( nameof ( message ) ) ;
8586
86- Enqueue ( message . LocalTime . Ticks , message ) ;
87+ return Enqueue ( message . LocalTime . Ticks , message , cancellationToken ) ;
8788}
8889}
8990
@@ -102,11 +103,11 @@ public MessageByOrderQueue()
102103}
103104
104105/// <inheritdoc />
105- public override void Enqueue ( Message message )
106+ public override ValueTask Enqueue ( Message message , CancellationToken cancellationToken )
106107{
107108if ( message is null )
108109throw new ArgumentNullException ( nameof ( message ) ) ;
109110
110- Enqueue ( _idGen . GetNextId ( ) , message ) ;
111+ return Enqueue ( _idGen . GetNextId ( ) , message , cancellationToken ) ;
111112}
112113}