@@ -60,7 +60,7 @@ A ring buffer makes a bounded queue when separate indices are used for inserting
6060 - Bug fixed when used with Rabbitmq.
6161 - Removed need to set Automatic Recovery to false for use with Rabbitmq
6262 - Removed Master/Slave, ReportScale, BufferHealth, ScaleWhen..., RollbackWhen... and TriggerByAccqWhen... concept (Break changes)
63- - Added command LockAcquireWhenAutoScale
63+ - Added command LockWhenScaling
6464 - Added command AutoScaleAcquireFault
6565 - Added command HeartBeat
6666 - Added command BackgroundLogger
@@ -116,9 +116,9 @@ var rb = await RingBuffer<int>.New("MyBuffer")
116116
117117Console .WriteLine ($" Ring Buffer name({rb .Name }) created." );
118118Console .WriteLine ($" Ring Buffer Current capacity is : {rb .CurrentCapacity }" );
119- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsInitCapacity = {rb .IsInitCapacity }." );
120- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsMaxCapacity = {rb .IsMaxCapacity }." );
121- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsMinCapacity = {rb .IsMinCapacity }." );
119+ Console .WriteLine ($" Ring Buffer name({rb .Name }) IsInitCapacity({ rb . Capacity }) = {rb .IsInitCapacity }." );
120+ Console .WriteLine ($" Ring Buffer name({rb .Name }) IsMaxCapacity({ rb . MaxCapacity }) = {rb .IsMaxCapacity }." );
121+ Console .WriteLine ($" Ring Buffer name({rb .Name }) IsMinCapacity({ rb . MinCapacity }) = {rb .IsMinCapacity }." );
122122
123123using (var buffer = await rb .AcquireAsync (token ))
124124{
@@ -152,29 +152,11 @@ var rb = await RingBuffer<int>.New("MyBuffer")
152152 .MaxCapacity (9 )
153153 .BuildWarmupAsync (token );
154154
155- Console .WriteLine ($" Ring Buffer name({rb .Name }) created." );
156- Console .WriteLine ($" Ring Buffer Current capacity is : {rb .CurrentCapacity }" );
157- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsInitCapacity = {rb .IsInitCapacity }." );
158- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsMaxCapacity = {rb .IsMaxCapacity }." );
159- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsMinCapacity = {rb .IsMinCapacity }." );
160-
161155if (! await rb .SwitchToAsync (ScaleSwitch .MaxCapacity ))
162156{
163157 // manual scale was not scheduled
164158 // do something
165- }
166-
167- using (var buffer = await rb .AcquireAsync (token ))
168- {
169- if (buffer .Successful )
170- {
171- Console .WriteLine ($" Buffer is ok({buffer .Successful }:{buffer .ElapsedTime }) value: {buffer .Current }" );
172- }
173- else
174- {
175- // do something
176- }
177- }
159+ }
178160```
179161
180162### Trigger Scale Usage
@@ -198,27 +180,9 @@ var rb = await RingBuffer<int>.New("MyBuffer")
198180 .MinCapacity (3 )
199181 .MaxCapacity (9 )
200182 .BuildWarmupAsync (token );
201-
202- Console .WriteLine ($" Ring Buffer name({rb .Name }) created." );
203- Console .WriteLine ($" Ring Buffer Current capacity is : {rb .CurrentCapacity }" );
204- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsInitCapacity = {rb .IsInitCapacity }." );
205- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsMaxCapacity = {rb .IsMaxCapacity }." );
206- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsMinCapacity = {rb .IsMinCapacity }." );
207-
208- using (var buffer = await rb .AcquireAsync (token ))
209- {
210- if (buffer .Successful )
211- {
212- Console .WriteLine ($" Buffer is ok({buffer .Successful }:{buffer .ElapsedTime }) value: {buffer .Current }" );
213- }
214- else
215- {
216- // do something
217- }
218- }
219183```
220184
221- ### Lock/Unlock de Acquire/Switch Usage
185+ ### Lock Acquire/Switch Usage
222186[ ** Top** ] ( #table-of-contents )
223187
224188When the scaling up or down process is executed, acquisition or scale switching is not blocked.
@@ -233,29 +197,10 @@ var rb = await RingBuffer<int>.New("MyBuffer")
233197 .Logger (HostApp .Services .GetService <ILogger <Program >>())
234198 .Factory ((_ ) => { return Task .FromResult (rnd .Next (1 , 10 )); })
235199 .ScaleTimer (50 , TimeSpan .FromSeconds (5 ))
236- .LockAcquireWhenAutoScale ()
237- .AutoScaleAcquireFault ()
200+ .LockWhenScaling ()
238201 .MinCapacity (3 )
239202 .MaxCapacity (9 )
240203 .BuildWarmupAsync (token );
241-
242- Console .WriteLine ($" Ring Buffer name({rb .Name }) created." );
243- Console .WriteLine ($" Ring Buffer Current capacity is : {rb .CurrentCapacity }" );
244- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsInitCapacity = {rb .IsInitCapacity }." );
245- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsMaxCapacity = {rb .IsMaxCapacity }." );
246- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsMinCapacity = {rb .IsMinCapacity }." );
247-
248- using (var buffer = await rb .AcquireAsync (token ))
249- {
250- if (buffer .Successful )
251- {
252- Console .WriteLine ($" Buffer is ok({buffer .Successful }:{buffer .ElapsedTime }) value: {buffer .Current }" );
253- }
254- else
255- {
256- // do something
257- }
258- }
259204```
260205
261206### HeartBeat Usage
@@ -275,24 +220,6 @@ var rb = await RingBuffer<int>.New("MyBuffer")
275220 .Factory ((_ ) => { return Task .FromResult (rnd .Next (1 , 10 )); })
276221 .BuildWarmupAsync (token );
277222
278- Console .WriteLine ($" Ring Buffer name({rb .Name }) created." );
279- Console .WriteLine ($" Ring Buffer Current capacity is : {rb .CurrentCapacity }" );
280- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsInitCapacity = {rb .IsInitCapacity }." );
281- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsMaxCapacity = {rb .IsMaxCapacity }." );
282- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsMinCapacity = {rb .IsMinCapacity }." );
283-
284- using (var buffer = await rb .AcquireAsync (token ))
285- {
286- if (buffer .Successful )
287- {
288- Console .WriteLine ($" Buffer is ok({buffer .Successful }:{buffer .ElapsedTime }) value: {buffer .Current }" );
289- }
290- else
291- {
292- // do something
293- }
294- }
295-
296223private void MyHeartBeat (RingBufferValue < int > item )
297224{
298225 // do anything ex: health check
@@ -302,7 +229,7 @@ private void MyHeartBeat(RingBufferValue<int> item)
302229### Background Logger Usage
303230[ ** Top** ] ( #table-of-contents )
304231
305- Log execution is done automatically by the component (Level debug and Error) in the same execution thread. This process can burden execution if the log recording process takes a long time.
232+ Log execution is done automatically by the component (Level Debug, Warning and Error) in the same execution thread. This process can burden execution if the log recording process takes a long time.
306233
307234For this scenario, you can use the log execution in the background in an asynchronous process done by the component.
308235
@@ -315,24 +242,6 @@ var rb = await RingBuffer<int>.New("MyBuffer")
315242 .BackgroundLogger ()
316243 .Factory ((_ ) => { return Task .FromResult (rnd .Next (1 , 10 )); })
317244 .BuildWarmupAsync (token );
318-
319- Console .WriteLine ($" Ring Buffer name({rb .Name }) created." );
320- Console .WriteLine ($" Ring Buffer Current capacity is : {rb .CurrentCapacity }" );
321- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsInitCapacity = {rb .IsInitCapacity }." );
322- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsMaxCapacity = {rb .IsMaxCapacity }." );
323- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsMinCapacity = {rb .IsMinCapacity }." );
324-
325- using (var buffer = await rb .AcquireAsync (token ))
326- {
327- if (buffer .Successful )
328- {
329- Console .WriteLine ($" Buffer is ok({buffer .Successful }:{buffer .ElapsedTime }) value: {buffer .Current }" );
330- }
331- else
332- {
333- // do something
334- }
335- }
336245```
337246
338247## RabbitMQ Usage
@@ -363,19 +272,13 @@ var rb = await RingBuffer<IChannel>.New("RabbitChanels")
363272 .Capacity (10 )
364273 .Logger (applogger ! )
365274 .BackgroundLogger ()
366- .Factory ((cts ) => ModelFactory (cts )! )
275+ .Factory ((cts ) => ChannelFactory (cts ))
367276 .ScaleTimer (100 , TimeSpan .FromSeconds (10 ))
368277 .MaxCapacity (20 )
369278 .MinCapacity (5 )
370279 .AutoScaleAcquireFault ()
371280 .BuildWarmupAsync (token );
372281
373- Console .WriteLine ($" Ring Buffer name({rb .Name }) created." );
374- Console .WriteLine ($" Ring Buffer Current capacity is : {rb .CurrentCapacity }" );
375- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsInitCapacity = {rb .IsInitCapacity }." );
376- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsMaxCapacity = {rb .IsMaxCapacity }." );
377- Console .WriteLine ($" Ring Buffer name({rb .Name }) IsMinCapacity = {rb .IsMinCapacity }." );
378-
379282using (var buffer = await rb .AcquireAsync (token ))
380283{
381284 if (buffer .Successful )
@@ -389,7 +292,7 @@ using (var buffer = await rb.AcquireAsync(token))
389292 }
390293}
391294
392- private async Task < IChannel > ModelFactory (CancellationToken cancellation )
295+ private async Task < IChannel > ChannelFactory (CancellationToken cancellation )
393296{
394297 return await connectionRabbit ! .CreateChannelAsync (cancellationToken : cancellation );
395298}
0 commit comments