An async queue for Fastify.
npm i @autotelic/fastify-queue
import fastifyQueue from '@autotelic/fastify-queue'
function myRoute (fastify, opts) {
fastify.register(fastifyQueue)
fastify.post('/example', async (request, reply) => {
reply.queue.add('async-action-one', reply.asyncAction())
reply.queue.add('async-action-two', reply.asyncActionTwo())
reply.queue.add('async-action-three', reply.asyncActionThree())
// Manual resolution optional - queue will otherwise resolve in onResponse hook.
const results = await reply.queue.resolve()
reply.status(200)
})
}
fastify-queue accepts the following optional configuration:
-
- Called each time an item is added to the queue. The value returned will be the value added to the queue.
-
- Called each time an item in the queue is resolved.
value
is the resolved value of an item in the queue.
- Called each time an item in the queue is resolved.
-
- Called if an error occurs while resolving the queue. Defaults to
fastify.log.error(error)
.
- Called if an error occurs while resolving the queue. Defaults to
-
- Called after the queue has successfully resolved.
result
is the resolved queue.
- Called after the queue has successfully resolved.
-
- Determines the name of the reply decorator added by the plugin. Defaults to
'queue'
.
- Determines the name of the reply decorator added by the plugin. Defaults to
-
- Max number of concurrently pending promises. Defaults to
Infinity
. - This value is passed directly to p-props
options
param.
- Max number of concurrently pending promises. Defaults to
-
- When set to
false
, errors thrown while resolving items in the queue will be accumulated. Once all items in the queue have settled, a single aggregated error will be thrown. - This value is passed directly to p-props
options
param.
- When set to
fastify-queue adds a queue
(or the value of opts.queueName
) reply decorator containing the following properties:
-
- Used to add items to the queue.
-
- Used to manually resolve the queue.
cb
defaults toopts.onResolved
- If
cb
is provided it will be called instead ofopts.onResolved
result
param ofcb
is the resolved queue- fastify-queue will automatically resolve the queue in an
onResponse
hook, if this has not already been called.
- Used to manually resolve the queue.
-
- The queue
Map
instance.
- The queue