Показаны сообщения с ярлыком BlockMonitor. Показать все сообщения
Показаны сообщения с ярлыком BlockMonitor. Показать все сообщения

вторник, 30 июня 2026 г.

Deepseek, Giga, TplBlockNaming, Metrics, BlockMonitor, Metrics, QuoteGeneratorWorkerSln.slnx

Deepseek, Giga, TplBlockNaming, Metrics, BlockMonitor, Metrics, QuoteGeneratorWorkerSln.slnx

https://chat.deepseek.com/share/74yf818xb08ewncn13
https://giga.chat/link/gcswsxZGaJ
https://giga.chat/link/gcsMeyTHNI

D:\Projects\VS02\2606\Trading\Giga\QuoteGeneratorWorkerSln\QuoteGeneratorWorkerSln.slnx

------------------------------------------------------------------

D:\Projects\VS02\2606\Trading\Giga\QuoteGeneratorWorkerSln\QuoteGeneratorWorker058\QuoteGeneratorWorker058.csproj

BlockMonitor (TplBlockNaming, Metrics)

------------------------------------------------------

Channels

D:\Projects\VS02\2606\Trading\Giga\QuoteGeneratorWorkerSln\QuoteGeneratorWorker\QuoteGeneratorWorker.csproj

D:\Projects\VS02\2606\Trading\Giga\QuoteGeneratorWorkerSln\QuoteGeneratorWorker02\QuoteGeneratorWorker02.csproj

D:\Projects\VS02\2606\Trading\Giga\QuoteGeneratorWorkerSln\QuoteGeneratorWorker03\QuoteGeneratorWorker03.csproj

D:\Projects\VS02\2606\Trading\Giga\QuoteGeneratorWorkerSln\QuoteGeneratorWorker04\QuoteGeneratorWorker04.csproj

--------------------------------------------------------------------------------

TplDataFlow

Unknown Block 

D:\Projects\VS02\2606\Trading\Giga\QuoteGeneratorWorkerSln\QuoteGeneratorWorker05\QuoteGeneratorWorker05.csproj

 public override async Task StopAsync(CancellationToken cancellationToken)

 {

     _logger.LogInformation("🛑 Инициирована остановка генератора котировок.");

     // 1. Останавливаем генерацию новых котировок.

     _logger.LogInformation("🛑 1. Останавливаем генерацию новых котировок.");

     _generationTimer?.Change(Timeout.Infinite, 0);

     // 2. Завершаем все блоки-потребители.

     _logger.LogInformation("🛑 2. Завершаем все блоки-потребители");

     foreach (var block in _consumerBlocks)

     {

         block.Complete();  // Unknown block

     }

     // 3. Ждём завершения всех обработчиков (ActionBlocks).

     _logger.LogInformation("🛑 3. Ждём завершения всех обработчиков (ActionBlocks)");

     await Task.WhenAll(_consumerBlocks.Select(b => b.Completion));

     // 4. Завершаем BroadcastBlock (он уже не нужен).

     _logger.LogInformation("🛑 4. Завершаем BroadcastBlock (он уже не нужен).");

     _broadcastBlock.Complete();

     _logger.LogInformation("🛑 5. Генератор котировок остановлен.");

 }

--------------------------------------------------------------------------

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 Инициирована остановка генератора котировок.

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 1. Останавливаем генерацию новых котировок.

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 2. Завершаем все блоки-потребители

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 3. Ждём завершения всех обработчиков (ActionBlocks)

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      ConsoleHandler: Обработана котировка: ROSN - $147.8

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      ApiHandler: Отправка котировки ROSN по цене $147.8

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      DatabaseHandler: Сохранение котировки ROSN по цене $147.8

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 4. Завершаем BroadcastBlock (он уже не нужен).

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 5. Генератор котировок остановлен.

----------------------------------------------------------------------------------

D:\Projects\VS02\2606\Trading\Giga\QuoteGeneratorWorkerSln\QuoteGeneratorWorker053\QuoteGeneratorWorker053.csproj

----------------------------------------------------------------

 public override async Task StopAsync(CancellationToken cancellationToken)

 {

     _logger.LogInformation("🛑 Инициирована остановка генератора котировок.");

     // 1. Останавливаем генерацию новых котировок.

     _logger.LogInformation("🛑 1. Останавливаем генерацию новых котировок.");

     _generationTimer?.Change(Timeout.Infinite, 0);

     // 2. Завершаем все блоки-потребители.

     _logger.LogInformation("🛑 2. Завершаем все блоки-потребители");

     foreach (var block in _consumerBlocks)

     {

         block.Complete();

     }

     // 3. Ждём завершения всех обработчиков (ActionBlocks).

     _logger.LogInformation("🛑 3. Ждём завершения всех обработчиков (ActionBlocks)");

     await Task.WhenAll(_consumerBlocks.Select(b => b.Completion));


     // 4. Завершаем BroadcastBlock (он уже не нужен).

     _logger.LogInformation("🛑 4. Завершаем BroadcastBlock (он уже не нужен).");

     _broadcastBlock.Complete();

     _logger.LogInformation("🛑 5. Генератор котировок остановлен.");

 }

------------------------------------------------------------------------------------

Видно ActionBlock - какой именно не видно - неизвестный
-------------------------------------------------------------------------------------

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 Инициирована остановка генератора котировок.

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 1. Останавливаем генерацию новых котировок.

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 2. Завершаем все блоки-потребители

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 2. Завершаем блок-потребитель: ActionBlock`1

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 2. Завершаем блок-потребитель: ActionBlock`1

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 2. Завершаем блок-потребитель: ActionBlock`1

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 3. Ждём завершения всех обработчиков (ActionBlocks)

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 4. Завершаем BroadcastBlock (он уже не нужен).

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 5. Генератор котировок остановлен.

--------------------------------------------------------------------------

D:\Projects\VS02\2606\Trading\Giga\QuoteGeneratorWorkerSln\QuoteGeneratorWorker055\QuoteGeneratorWorker055.csproj

Видно Кортеж

 _logger.LogInformation("🛑 2. Завершаем блок-потребитель: {BlockName}", name);

---------------------------------------------------------------------------

public override async Task StopAsync(CancellationToken cancellationToken)

{

    _logger.LogInformation("🛑 Инициирована остановка генератора котировок.");

    // 1. Останавливаем генерацию новых котировок.

    _logger.LogInformation("🛑 1. Останавливаем генерацию новых котировок.");

    _generationTimer?.Change(Timeout.Infinite, 0);

    // 2. Завершаем все блоки-потребители с выводом их имён.

    _logger.LogInformation("🛑 2. Завершаем все блоки-потребители.");

    foreach (var (block, name) in _consumerBlocks)

    {

        _logger.LogInformation("🛑 2. Завершаем блок-потребитель: {BlockName}", name);

        block.Complete();

    }

    // 3. Ждём завершения всех обработчиков.

    _logger.LogInformation("🛑 3. Ожидаем завершения всех обработчиков (ActionBlocks).");

    await Task.WhenAll(_consumerBlocks.Select(b => b.Block.Completion));

    // 4. Завершаем BroadcastBlock.

    _logger.LogInformation("🛑 4. Завершаем {BlockName}.", _broadcastBlockName);

    _broadcastBlock.Complete();

    _logger.LogInformation("🛑 5. Генератор котировок остановлен.");

}

-----------------

nfo: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 Инициирована остановка генератора котировок.

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 1. Останавливаем генерацию новых котировок.

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 2. Завершаем все блоки-потребители.

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 2. Завершаем блок-потребитель: ApiHandler

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 2. Завершаем блок-потребитель: DatabaseHandler

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 2. Завершаем блок-потребитель: ConsoleHandler

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 3. Ожидаем завершения всех обработчиков (ActionBlocks).

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 4. Завершаем BroadcastBlock.

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 5. Генератор котировок остановлен.

---------------------------------------------------------------------------------------

D:\Projects\VS02\2606\Trading\Giga\QuoteGeneratorWorkerSln\QuoteGeneratorWorker058\QuoteGeneratorWorker058.csproj

BlockMonitor (Naming, Metrics)

----------------------------------------------------------------------------------------

public override async Task StopAsync(CancellationToken cancellationToken)

{

    _logger.LogInformation("🛑 Инициирована остановка генератора котировок.");


    // 1. Останавливаем таймер

    _logger.LogInformation("🛑 1. Останавливаем генерацию новых котировок.");

    _generationTimer?.Change(Timeout.Infinite, 0);

    // 2. Завершаем все блоки-потребители

    _logger.LogInformation("🛑 2. Завершаем все блоки-потребители.");

    foreach (var monitor in _consumerMonitors)

    {

        _logger.LogInformation("🛑 2. Завершаем блок-потребитель: {BlockName}", monitor.Name);

        monitor.Block.Complete();

    }

    // 3. Ждём завершения всех потребителей

    _logger.LogInformation("🛑 3. Ожидаем завершения всех обработчиков.");

    await Task.WhenAll(_consumerMonitors.Select(m => m.Block.Completion));

    // 4. Завершаем BroadcastBlock

    _logger.LogInformation("🛑 4. Завершаем {BlockName}.", _broadcastMonitor.Name);

    _broadcastBlock.Complete();

    // 5. Выводим статистику по всем блокам

    _logger.LogInformation("📊 Статистика работы блоков:");

    LogStatistics(_broadcastMonitor);

    foreach (var monitor in _consumerMonitors)

    {

        LogStatistics(monitor);

    }

    _logger.LogInformation("🛑 5. Генератор котировок остановлен.");

}

----------------------------------------------------------------------------------------

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 Инициирована остановка генератора котировок.

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 1. Останавливаем генерацию новых котировок.

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 2. Завершаем все блоки-потребители.

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 2. Завершаем блок-потребитель: ApiHandler

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 2. Завершаем блок-потребитель: DatabaseHandler

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 2. Завершаем блок-потребитель: ConsoleHandler

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 3. Ожидаем завершения всех обработчиков.

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 4. Завершаем BroadcastBlock.

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      📊 Статистика работы блоков:

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      Блок BroadcastBlock: Принято = 6, Обработано = 0, Ошибок = 0, Время работы = 00:00:11.5151087

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      Блок ApiHandler: Принято = 6, Обработано = 6, Ошибок = 0, Время работы = 00:00:11.5157941

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      Блок DatabaseHandler: Принято = 6, Обработано = 6, Ошибок = 0, Время работы = 00:00:11.5138970

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      Блок ConsoleHandler: Принято = 6, Обработано = 6, Ошибок = 0, Время работы = 00:00:11.5128663

info: QuoteGeneratorWorker.Services.QuoteGeneratorService[0]

      🛑 5. Генератор котировок остановлен.
------------------------------------------------------------
Мы видим Naming, Metrics