rittenhop-dev/versions/5.94.2/node_modules/express-queue/README.md
2024-09-23 19:40:12 -04:00

86 lines
3.3 KiB
Markdown

[![npm version](https://badge.fury.io/js/express-queue.svg)](http://badge.fury.io/js/express-queue)
[![Build Status](https://travis-ci.org/alykoshin/express-queue.svg)](https://travis-ci.org/alykoshin/express-queue)
[![Coverage Status](https://coveralls.io/repos/alykoshin/express-queue/badge.svg?branch=master&service=github)](https://coveralls.io/github/alykoshin/express-queue?branch=master)
[![Code Climate](https://codeclimate.com/github/alykoshin/express-queue/badges/gpa.svg)](https://codeclimate.com/github/alykoshin/express-queue)
[![Inch CI](https://inch-ci.org/github/alykoshin/express-queue.svg?branch=master)](https://inch-ci.org/github/alykoshin/express-queue)
[![Dependency Status](https://david-dm.org/alykoshin/express-queue/status.svg)](https://david-dm.org/alykoshin/express-queue#info=dependencies)
[![devDependency Status](https://david-dm.org/alykoshin/express-queue/dev-status.svg)](https://david-dm.org/alykoshin/express-queue#info=devDependencies)
[![Known Vulnerabilities](https://snyk.io/test/github/alykoshin/express-queue/badge.svg)](https://snyk.io/test/github/alykoshin/express-queue)
# express-queue
Express middleware to limit a number of simultaneously processing requests using queue
If you have different needs regarding the functionality, please add a [feature request](https://github.com/alykoshin/express-queue/issues).
## Installation
```sh
npm install --save express-queue
```
## Usage
```js
var express = require('express');
var queue = require('express-queue');
var app = express();
// Using queue middleware
app.use(queue({ activeLimit: 2, queuedLimit: -1 }));
// activeLimit - max request to process simultaneously
// queuedLimit - max requests in queue until reject (-1 means do not reject)
// rejectHandler - handler to call when queuedLimit is reached (see below)
//
// May be also:
// app.get('/api', queue({ activeLimit: 2, queuedLimit: -1})
```
You can access MiniQueue object used internally. To get current queue length you may do following:
```js
const express = require('express');
const expressQueue = require('../');
const queueMw = expressQueue({ activeLimit: 2, queuedLimit: -1 });
const app = express();
app.use(queueMw);
console.log(`queueLength: ${queueMw.queue.getLength()}`);
```
For more info on Queue object used refer to [npmjs.com/package/mini-queue](https://www.npmjs.com/package/mini-queue) package docs and/or [source code](https://github.com/alykoshin/mini-queue).
## Reject handler
If you set queuedLimit, when the queue is full, the middleware will reject any incoming request.
The default handler will send a 503 status code, but you can setup your own handler with `rejectHandler` option, e.g.:
```js
const queueMw = expressQueue({ activeLimit: 2, queuedLimit: 6, rejectHandler: (req, res) => { res.sendStatus(500); } });
```
## Example
Please, refer to `./examples/` directory for a working example.
## Credits
[Alexander](https://github.com/alykoshin/)
# Links to package pages:
[github.com](https://github.com/alykoshin/express-queue)   [npmjs.com](https://www.npmjs.com/package/express-queue)   [travis-ci.org](https://travis-ci.org/alykoshin/express-queue)   [coveralls.io](https://coveralls.io/github/alykoshin/express-queue)   [inch-ci.org](https://inch-ci.org/github/alykoshin/express-queue)
## License
MIT