/** * {@inheritdoc} */ public function collect() { $queue = $this->rabbitMqClient->getQueue($this->vhost, $this->queueName); $metrics = [new Metric('pending', $queue['messages_ready']), new Metric('running', $queue['messages_unacknowledged'])]; if (array_key_exists('message_stats', $queue)) { $metrics[] = new Metric('publish_rate', $queue['message_stats']['publish_details']['rate']); $metrics[] = new Metric('deliver_rate', $queue['message_stats']['deliver_get_details']['rate']); } return $metrics; }
function it_collects_the_rates_from_stats_if_available(RabbitMqHttpClient $client) { $client->getQueue('vhost', 'queue')->willReturn(['messages_ready' => 1, 'messages_unacknowledged' => 10, 'message_stats' => ['publish_details' => ['rate' => 0.12], 'deliver_get_details' => ['rate' => 12.34]]]); $this->collect()->shouldBeLike([new Metric('pending', 1), new Metric('running', 10), new Metric('publish_rate', 0.12), new Metric('deliver_rate', 12.34)]); }