oat-sa / lib-correlation-ids-guzzle
OAT Correlation Ids Guzzle Library
0.3.0
2024-01-09 08:30 UTC
Requires
- php: ^7.1.3 || ^8.0
- guzzlehttp/guzzle: ^6.4|^7.0
- oat-sa/lib-correlation-ids: ^0.2.0
Requires (Dev)
- phpunit/phpunit: ^8.3
This package is auto-updated.
Last update: 2024-09-02 10:22:15 UTC
README
基于 correlation ids library 的 Guzzle 中间件,用于关联 ID 的 PHP 库。
目录
安装
$ composer require oat-sa/lib-correlation-ids-guzzle
原理
此库提供了一个可用的 guzzle 中间件,它会将从 关联 ID 注册表 中获取的关联 ID 作为请求头传递。
注意
- 当前进程的关联 ID 将作为父关联 ID 传递,
- 根关联 ID 也将被传递。
有关调用链的更多详细信息,请参阅 关联 ID 库 文档。
使用方法
使用提供的工厂
GuzzleClientFactory
为您创建一个已经启用中间件的 Guzzle 客户端
<?php declare(strict_types=1); use OAT\Library\CorrelationIds\Registry\CorrelationIdsRegistry; use OAT\Library\CorrelationIds\Registry\CorrelationIdsRegistryInterface; use OAT\Library\CorrelationIdsGuzzle\Factory\GuzzleClientFactory; use OAT\Library\CorrelationIdsGuzzle\Middleware\CorrelationIdsGuzzleMiddleware; /** @var CorrelationIdsRegistryInterface $registry */ $registry = new CorrelationIdsRegistry(...); $clientFactory = new GuzzleClientFactory(new CorrelationIdsGuzzleMiddleware($registry))); $client = $clientFactory->create(['some' => 'options']); ... $client->request('GET', 'http://example.com'); // Will forward correlation ids as request headers automatically.
手动
您需要按照以下方式将 CorrelationIdsGuzzleMiddleware
推送到您的处理程序堆栈
<?php declare(strict_types=1); use GuzzleHttp\Client; use GuzzleHttp\HandlerStack; use GuzzleHttp\Middleware; use OAT\Library\CorrelationIds\Registry\CorrelationIdsRegistry; use OAT\Library\CorrelationIds\Registry\CorrelationIdsRegistryInterface; use OAT\Library\CorrelationIdsGuzzle\Middleware\CorrelationIdsGuzzleMiddleware; /** @var CorrelationIdsRegistryInterface $registry */ $registry = new CorrelationIdsRegistry(...); $handlerStack = HandlerStack::create(); $handlerStack->push(Middleware::mapRequest(new CorrelationIdsGuzzleMiddleware($registry))); $client = new Client(['handler' => $handlerStack]); ... $client->request('GET', 'http://example.com'); // Will forward correlation ids as request headers automatically.
注意:您可以通过提供自己的 CorrelationIdsHeaderNamesProviderInterface 实现来自定义日志上下文键名,并将其传递给 CorrelationIdsGuzzleMiddleware
构造函数。
测试
运行测试
$ vendor/bin/phpunit
注意:有关可用的测试套件,请参阅 phpunit.xml.dist。