2.0.0 • Published 4 years ago
@stdjs/queue v2.0.0
STDJS - Queue
Queue Adapter with Async/Promise for Javascript(& Typescript).
There are a lot of Queue libraries. Even older libraries may not support Promise. I've gathered most queue libraries into one interface.
Installation
npm install @stdjs/queue --save
Support Queue
- local
- aws-sdk (SQS)
npm install aws-sdk --save
- beanstalkd
npm install beanstalkd --save
- amqplib (such as, RabbitMQ)
npm install amqplib --save
(in typescriptnpm install @types/amqplib -D
)
Support Options
adapter | delays | priority | timeout |
---|---|---|---|
local | O | X (use mix adapter) | O |
aws-sdk | O (Max 15min) | X (use mix adapter) | By AWS Console |
beanstalkd | O | O | X |
amqplib | X | O | X |
Interfaces
export interface Connector {
connect<TPayload>(): Queue<TPayload>
}
export enum Priority {
Normal = 10,
High = 30,
Highest = 50,
}
export interface Queue<P> {
close(): Promise<void>
countWaiting(): Promise<number>
countRunning(): Promise<number>
flush(): Promise<void>
send(payload: P, options?: SendQueueOptions): Promise<void>
receive(): Promise<Job<P> | undefined>
delete(job: Job<P>): Promise<void>
}
export interface SendQueueOptions {
delay?: number
priority?: number
}
export interface Job<P> {
payload: P
queue: Queue<P>
isDeleted: boolean
done(): Promise<void>
}
Usage
You can create as follows:
(Please refer to the Config section for config.)
const queue = require("@stdjs/queue")
const storage = queue.createQueue(/* Connector */)
// or
import { createQueue } from "@stdjs/queue"
const storage = createQueue(/* Connector */)
Create Local Queue
const connection = createQueue()
Create Aws SQS Queue
import { createQueue } from "@stdjs/queue"
import { SqsConnector } from '@stdjs/queue/lib/driver/sqs'
const connection = createQueue(new SqsConnector({
url, // SQS URL, ex. "https://sqs.{region}.amazonaws.com/012345678910/your-sqs-name"
...options,
}))
Create RabbitMQ(AMQP) Queue
import { createQueue } from "@stdjs/queue"
import { AmqpConnector } from '@stdjs/queue/lib/driver/amqp'
const connection = createQueue(new AmqpConnector({
queue, // AMQP Queue Name, ex. "amqp-queue-name",
...options,
}))
Create Beanstalkd Queue
import { createQueue } from "@stdjs/queue"
import { BeanstalkdConnector } from '@stdjs/queue/lib/driver/beanstalkd'
const connection = createQueue(new BeanstalkdConnector({
host, // Beanstalkd server host, default "localhost"
port, // Beanstalkd server port, default 11300
tube, // Tube name,
}))
License
MIT
2.0.0-alpha.4
4 years ago
2.0.0
4 years ago
2.0.0-alpha.3
5 years ago
2.0.0-alpha.2
5 years ago
1.2.0
6 years ago
1.1.0
6 years ago
1.0.1
6 years ago
1.0.0
6 years ago