@@ -50,6 +50,7 @@ internal class NatsKVWatcher<T> : IAsyncDisposable
50
50
private ulong _sequenceConsumer ;
51
51
private string _consumer ;
52
52
private volatile NatsKVWatchSub < T > ? _sub ;
53
+ private INatsJSConsumer ? _initialConsumer ;
53
54
54
55
public NatsKVWatcher (
55
56
NatsJSContext context ,
@@ -114,6 +115,12 @@ public NatsKVWatcher(
114
115
115
116
public ChannelReader < NatsKVEntry < T > > Entries => _entryChannel . Reader ;
116
117
118
+ internal INatsJSConsumer InitialConsumer
119
+ {
120
+ get => _initialConsumer ?? throw new InvalidOperationException ( "Consumer not initialized" ) ;
121
+ private set => _initialConsumer = value ;
122
+ }
123
+
117
124
internal string Consumer
118
125
{
119
126
get => Volatile . Read ( ref _consumer ) ;
@@ -136,10 +143,10 @@ public async ValueTask DisposeAsync()
136
143
await _commandTask ;
137
144
}
138
145
139
- internal ValueTask InitAsync ( )
146
+ internal async ValueTask InitAsync ( )
140
147
{
141
148
Consumer = NewNuid ( ) ;
142
- return CreatePushConsumer ( "init" ) ;
149
+ InitialConsumer = await CreatePushConsumer ( "init" ) ;
143
150
}
144
151
145
152
private ValueTask OnDisconnected ( object ? sender , NatsEventArgs args )
@@ -308,7 +315,7 @@ private async Task ConsumerCreateLoop()
308
315
}
309
316
}
310
317
311
- private async ValueTask CreatePushConsumer ( string origin )
318
+ private async ValueTask < INatsJSConsumer > CreatePushConsumer ( string origin )
312
319
{
313
320
if ( _debug )
314
321
{
@@ -375,7 +382,7 @@ private async ValueTask CreatePushConsumer(string origin)
375
382
config . OptStartSeq = sequence + 1 ;
376
383
}
377
384
378
- await _context . CreateOrUpdateConsumerAsync (
385
+ var consumer = await _context . CreateOrUpdateConsumerAsync (
379
386
_stream ,
380
387
config ,
381
388
cancellationToken : _cancellationToken ) ;
@@ -384,6 +391,8 @@ await _context.CreateOrUpdateConsumerAsync(
384
391
{
385
392
_logger . LogDebug ( NatsKVLogEvents . NewConsumerCreated , "Created new consumer {Consumer} from {Origin}" , Consumer , origin ) ;
386
393
}
394
+
395
+ return consumer ;
387
396
}
388
397
389
398
private string NewNuid ( )
0 commit comments