我有脚本consumer.php(来自rabbit的监听队列)
<?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();
}
如果我使用这些参数,我能够在第一次迭代后立即发送跟踪,但在后续迭代中什么也没有到达
我成功了。 我正在使用 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();
}
现在我将脚本的每次迭代作为单独的跟踪