rabbitmq 使用者队列中的Datadog跟踪

abithluo  于 12个月前  发布在  RabbitMQ
关注(0)|答案(1)|浏览(173)

我有脚本consumer.php(从兔子监听队列)

<?php

namespace App\Queue\Receivers;

class CronReceiver extends BaseReceiver
{
    public function handle(AMQPMessage $msg): void
    {
        //logic
    }
}

字符串
消费者可以工作很长时间(直到出现错误或强制重启)

只有这样,跟踪才会到达datadog
我想在不重新启动脚本的情况下为每个接收到的消息发送跟踪到datadog这可能吗?有人能告诉我如何做到这一点吗?
我试

public function handle(AMQPMessage $msg): void
    {
        $tracer = new Tracer();
        $tracer->startActiveSpan('run');
        \DDTrace\GlobalTracer::set($tracer);
        //logic
        var_dump($tracer->getActiveSpan());
        $tracer->getActiveSpan()->finish();
        $tracer->flush();
    }


如果我使用这些参数,我可以在第一次迭代后立即发送跟踪,但在随后的迭代中什么也没有到达

iswrvxsc

iswrvxsc1#

我让它工作。我使用datadog/dd-trace库
现在我的代码看起来像这样:

public function handle(AMQPMessage $msg): void
{
        $tracer = new \DDTrace\Tracer();
        $scope = $tracer->startActiveSpan('run');
        $span = $scope->getSpan();
        $span->setTag('service.name', 'myServiceName');
        //logic queue consumer
        $scope->close();
        $tracer->flush();
}

字符串
现在我将脚本的每次迭代作为单独的跟踪
x1c 0d1x的数据

相关问题