wieni/saloon-aws-xray

Saloon 的 AWS X-Ray 集成

1.0.0 2024-07-02 16:34 UTC

This package is auto-updated.

Last update: 2024-09-02 17:07:38 UTC


README

此包提供了一个 Saloon 发送器,该发送器将跟踪发送到 AWS X-Ray。
它为每个请求创建一个单独的跟踪,并在请求完成后将跟踪发送到 AWS X-Ray。

安装

composer require wieni/saloon-aws-xray

配置

Laravel

当使用 Laravel 时,此包可以很好地与 napp/xray-laravel 一起使用。
请阅读该包的文档,以配置 Laravel 的 AWS X-Ray。

然后,您可以创建一个 ServiceProvider 来配置 Saloon 以使用 AWS X-Ray 发送器。

// app/Providers/SaloonXrayServiceProvider.php
<?php declare(strict_types=1);

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Napp\Xray\Submission\DaemonSegmentSubmitter;
use Napp\Xray\Xray;
use Saloon\Config as SaloonConfig;
use Saloon\HttpSender\HttpSender;
use Wieni\SaloonAwsXray\XrayHttpSender;

final class SaloonXrayServiceProvider extends ServiceProvider
{
    public function register(): void
    {
        // Configure the XrayHttpSender
        $this->app->bind(
            XrayHttpSender::class,
            function (): XrayHttpSender {
                $submitterClass = config('xray.submitter', DaemonSegmentSubmitter::class);
                $senderClass = config('saloon.default_sender', HttpSender::class);

                return new XrayHttpSender(
                    new $senderClass(),
                    $this->app[Xray::class]->tracer(),
                    new $submitterClass(),
                );
            },
        );

        // Configure Saloon to use the XrayHttpSender
        SaloonConfig::setSenderResolver(fn() => $this->app[XrayHttpSender::class]);
    }
}

并在您的 config/app.php 中注册 ServiceProvider

// config/app.php
'providers' => [
    // ...
+    App\Providers\SaloonXrayServiceProvider::class,
    // ...
],