Возможность получения мониторинговой информации о том, что происходит внутри SObjectizer Environment была добавлена довольно давно, еще в версии 5.5.4. Работает этот механизм на потактовой основе: пользователь может задать темп, с которым он хочет получать мониторинговую информацию. Например, раз в 250ms. И SObjectizer каждые 250ms будет отсылать на специальный mbox целую пачку сообщений с текущими значениями.
Со временем у этого механизма выявился небольшой недостаток: для ряда сценариев обработки мониторинговой информации было очень желательно знать, что очередной такт раздачи данных начался или закончился. В версии 5.5.18 этот недостаток был устранен. В пространство имен so_5::stats::messages добавлены новые сообщения distribution_started и distribution_finished. Сообщение distribution_started отсылается в начале каждого такта раздачи очередной порции мониторинговой информации. Фактически, это сообщение первое, которое отсылается stats_controller-ом в начале такта. Затем уже следуют сообщения от всех источников данных внутри SObjectizer Environment. А закрывает такт сообщение distribution_finished. Это последнее сообщение, после которого уже не будет никаких сообщений, относящихся к только что закончившемуся такту.
Два эти сообщения упрощают обработку сценариев, для которых требуется иметь информацию о моментах начала/завершения тактов. Например, для обновления информации на графиках или для фиксации транзакций с очередной порцией свежих данных в БД.
Под катом пример агента, который инициирует раздачу мониторинговой информации три раза в секунду, после чего обрабатывает только сообщения с данными о длине очередей заявок на рабочих нитях запущенных в SObjectizer Environment диспетчеров (для фильтрации нужных сообщений используется механизм delivery filters).