Correlate http requests across microservices built with micro.
This a micro module for setting a correlation id per HTTP request. The correlation id associated with a request remains consistent across async calls made within the scope of the request handler.
This module is inspired by express-correlation-id and makes use of AsyncLocalStorage.
# npm
npm i -S micro-correlation-id
# or yarn
yarn add micro-correlation-id
const { correlator, getId } = require('micro-correlation-id');
const assert = require('assert');
module.exports = correlator()(async (req, res) => {
// These values will always be the same within this scope
assert.equal(req.correlationId(), getId());
res.end();
});
This creates and/or sets the correlation id on each incomming request. If the incoming request has a correlation id then that id is preserved, a new uuid is assigned otherwise. The correlation id may be accessed using req.correlationId()
or getId()
.
correlator
takes and optional argument idHeader
which defaults to x-correlation-id
. This is HTTP header key used for passing a correlation id. You may change this to your liking.
Use this to get the current correlation id from any where within a request handler. It will always be equivalent to req.correlationId()
.