ts-mongo-queue
v1.4.0
Published
mongo-queue typescript implementation
Downloads
2,489
Readme
ts-mongo-queue
A TypeScript library for managing queues using MongoDB.
Technology
WHO SHOULD USE
Any developer who needs mongodb-queue with support to mongodb-7 and node driver 6.0.1.
AUTHOR
Marcus Yoda @marcusyoda
Installation
npm install ts-mongo-queue
Or with Yarn:
yarn add ts-mongo-queue
Basic Usage
First, import the necessary functions and classes:
import { MongoClient } from 'mongodb'
import { MongoQueue } from 'ts-mongo-queue'
Next, create an instance of MongoQueue
:
const client = new MongoClient('your_mongodb_connection_string')
const queue = MongoQueue(client, 'your_queue_name')
Add a Message to the Queue
const payload = { data: 'test' }
const result = await queue.add(payload)
console.log(result.messageId)
Fetch the Next Message from the Queue
const nextMessage = await queue.get()
console.log(nextMessage.payload)
Certainly! I'll enhance the "Configuration" section based on the initial information you provided about the library.
Configuration
ts-mongo-queue
provides a range of configurations to tailor the queue to your specific needs. When creating a new instance of MongoQueue
, you can provide an optional opts
object to configure the behavior:
const queue = MongoQueue(client, 'your_queue_name', {
visibility: 30,
delay: 10,
deadQueue: new Queue(client, 'dead_queue_name'),
maxRetries: 5,
})
Options
visibility: The duration (in seconds) a message remains hidden from
get
after being fetched, providing the consumer a window to process and delete the message. Defaults to30
seconds.delay: The duration (in seconds) a message waits before becoming visible for the first time. Useful for scheduled jobs or delayed processing. Defaults to no delay.
deadQueue: An optional instance of another
Queue
where messages that exceed themaxRetries
count are moved. If not provided, messages that fail repeatedly will remain in the primary queue.maxRetries: The maximum number of attempts to fetch a message before it's considered dead and, if a
deadQueue
is provided, moved there. Defaults to infinite retries.
Environment Configurations
Some configurations can also be set using environment variables:
- QUEUE_GET_RECURSION_LIMIT: Set a limit on how many times the library should attempt to fetch a message recursively. This can be crucial to prevent potential infinite loops or excessive recursions. Default value is
500
.
For setting the environment variable:
export QUEUE_GET_RECURSION_LIMIT=1000
Testing
The library is fully tested. To run tests:
yarn test
Contributing
Feel free to open issues or pull requests if you'd like to improve or fix something in the library!
License
MIT