Request tracking across microservices.
You can install the Request Tracker package via Composer:
composer require dragon-code/request-trackeruse DragonCode\RequestTracker\TrackerHeader;
use DragonCode\RequestTracker\TrackerRequest;
use Symfony\Component\HttpFoundation\Request;
/** @var Request $request */
$request = /* ... */;
$tracker = new TrackerRequest($request, new TrackerHeader);
function tracker(Request $request, ?int $userId = null): Request
{
return (new TrackerRequest($request, new TrackerHeader))
->userId($userId)
->ip()
->traceId()
->getRequest();
}
// For the first call
tracker($request, $user->id);
// For subsequent services
tracker($request);use DragonCode\RequestTracker\TrackerHeader;
use DragonCode\RequestTracker\TrackerRequest;
use Symfony\Component\HttpFoundation\Request;
/** @var Request $request */
$request = /* ... */;
$tracker = new TrackerRequest($request, new TrackerHeader);
function tracker(Request $request, ?int $userId = null): Request
{
return (new TrackerRequest($request, new TrackerHeader))
->userId($userId)
->ip()
->traceId()
->custom('Some-Header', fn (Request $request) => 1234
->getRequest();
}$item = tracker($request);
return $item->headers->get('Some-Header'); // 1234$request->headers->set('Some-Header', 'qwerty');
$item = tracker($request);
return $item->headers->get('Some-Header'); // qwertyuse DragonCode\RequestTracker\TrackerHeader;
return new TrackerHeader(
userId: 'Some-User-Id',
ip: 'Some-IP',
traceId: 'Some-Trace-Id',
);This package is licensed under the MIT License.