1.0.6 • Published 3 years ago

moleculer.idempotency v1.0.6

Weekly downloads
95
License
MIT
Repository
github
Last release
3 years ago

Idempotency middleware for Moleculer Microservices Framework

Idempotency middleware stands for client requests to be idempotent. Client can make the same request repeatedly because of network error, timeout etc.. but the same operation will not be executed twice. Client must repeat the same request by sending the same Idempotency Key value in request headers, and the request will be responded with the same response as the original request.

Moleculer.Idempotency middleware is compatible with moleculer-web API Gateway

Installation

This module is available on the public NPM registry:

npm install moleculer.idempotency --save

Client request

Client must include idempotency key in every request. Idempotency key must be a unique key per same requests. The header name can be configured through middleware options. Default name is idempotency-key

idempotency-key: exampleUniqueHashString

Usage

Moleculer.Idempotency middleware must be included in API Gateway moleculer.config.js file

Load with default options By default memory will be used as a data storage

// moleculer.config.js
const IdempotencyMiddleware = require("moleculer.idempotency");

module.exports = {
  middlewares: [
    IdempotencyMiddleware()
  ]
};

Load with Redis options

// moleculer.config.js
const IdempotencyMiddleware = require("moleculer.idempotency");

module.exports = {
  middlewares: [
    IdempotencyMiddleware({
      storage: {
        type: "redis",
        options: { // Pass Redis options object
            "host": "_redis_hostname_here_",
            "password": "_redis_password_here_",
            "port": 6379
        }
      },
      lifetime: 60 * 60, // seconds
      keyName: 'idempotency-key'
    })
  ]
};

Fields

FieldDescription
storageData storage type and options. Available types are: Memory, Redis
lifetimeTime (in seconds) how long the idempotency data will be saved in data storage. After this time period data will be purged and the next request with same Idempotency-Key will execute the endpoint. Default value is 1 hour (3600 seconds).
keyNameIdempotency key header name. Default value is idempotency-key

License

moleculer.idempotency is available under the MIT license.

Copyright (c) 2021 eduardavetyan
1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago