Skip to content

PSR-7 middleware to handle incoming correlation id header for microservices.

License

Notifications You must be signed in to change notification settings

proemergotech/correlate-php-psr-7

Repository files navigation

correlate-php-psr-7


Overview

It's very difficult to track a request accross the system when we are working with microservices. We came out a solution for that. We generate a unique version 4 uuid for every request and every service passes this id via request header to other services. We call this correlation ID.

Packages

Installation

  • Install via composer
composer require proemergotech/correlate-php-psr-7

Setup for Slim 3 framework

To use this class as a middleware, you can use ->add( new ExampleMiddleware() ); function chain after the $app, Route, or group(), which in the code below, any one of these, could represent $subject.

$logger = $app['monolog']; // Must be \Monolog\Logger

// This is an optional callback function to set correlation id to a DIC.
$callback = function($correlationId) use ($app) { 
    $app->getContainer()['cid'] = $correlationId;
}

$subject->add(new \ProEmergotech\Correlate\Psr7\Psr7CorrelateMiddleware($logger, $callback));

Passing \Monolog\Logger is optional.

Usage

This middleware automatically adds correlation id (coming from request header) to every log messages if you provided the optional \Monolog\Logger instance to middleware's constructor.

You can access the correlation id IN A ROUTE CONTROLLER if you want to work with it.

$cid = $request->getAttribute(\ProEmergotech\Correlate\Correlate::getParamName());

Contributing

See CONTRIBUTING.md file.

Credits

This package developed by Soma Szélpál at Pro Emergotech Ltd..

License

This project is released under the MIT License.

About

PSR-7 middleware to handle incoming correlation id header for microservices.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages