Class: EventQueue

docloop EventQueue

Class representing a queue of events to be checked off or repeated if need be.

Every event added to the qeue will be wrapped into a QueuedEvent. And that in turn will be emitted periodically as -attempt event until it exceeds the maximal number of retries, is abandoned for some other reason or is checked off.


new EventQueue(config)

Parameters:
Name Type Description
config Object
Properties
Name Type Argument Default Description
collection Collection

MongoDb collection. Sets collection property.

delay Number | Array.<Number> | function <optional>

Sets delay property.

maxRetries Number <optional>
3

Sets maxRetries property.

processInterval Number <optional>

Milliseconds. Time until the qeue checks again for due events.

spread Number <optional>
1000

Sets spread property.

Properties:
Name Type Argument Default Description
collection Collection

This is where the queue stores active events.

delay Number | Array.<Number> | function <optional>

Delay until the event will fire again if not checked off. If an array is provided the nth retry will be delayed for this.delay[n-1] milliseconds. If a function is provided the nth attempt will be delayed for this.delay(n) milliseconds. Defaults to: (attempts => Math.pow(10, attempts)*1000)

maxRetries Number <optional>
3

Number of retries until the event will be marked as failed. if this.delay is an array, this value defaults to this.delay.length.

spread Number <optional>
1000

Milliseconds. If multiple events are due to retrial, they wont fire all at once but will be spread with a fixed delay between each of them.

processInterval Number

Milliseconds. Time until the queue checks again for due events.

timeout Timeout

The Timeout object returned by setInterval for the periodical check.

Classes

QueuedEvent

Methods


_getDelay(attempts)

Returns the delay for the nth retry. The 0th retry is considered the first attempt and has no delay.

Parameters:
Name Type Description
attempts Number

Number of previous attempts.

Returns:
Type
Number | undefined

<async> add(event_name [, event])

Adds an event to the queue. For every added event the queue will immediately emit an module:docloop.EventQueue.event:attempt.

Parameters:
Name Type Argument Default Description
event_name String

An event name

event Object <optional>
{}

Data associated with the event

Returns:
Type
module:docloop.EventQueue~QueuedEvent

<async> clear()

Removes all events from the queue without further notice.


<async> process()

Checks if events are due for retries or have failed.

Every event that has more attempts than .maxRetries will be abandoned. Every event that is due will be attempted.

Fires:

start()

Starts looking periodically for due or failed events.

Returns:
Type
this

stop()

Stops looking periodically for due or failed events.

Returns:
Type
this