amqplib-delay
TypeScript icon, indicating that this package has built-in type declarations

0.0.1 • Public • Published

amqplib-delay

Install

npm i amqplib-delay -S

usage

import { ConfirmChannel } from "amqplib";
import { MQ, defaultDelayTime } from "amqplib-delay";
 
export const mq = new MQ();
(async () => {
  await mq.connect("amqp://localhost");
 
  //创建重试延时队列
  await mq.ch.addSetup(async (ch: ConfirmChannel) => {
    return Promise.all([mq.createDelayQueue(ch)]);
  });
 
  let delayConfig = {
    ...MQ.createQueueKey("delay"),
    //第一次延时
    delay: 1,
    //重试延时
    retryExpire: [
      defaultDelayTime["15s"],
      defaultDelayTime["30s"],
      defaultDelayTime["1m"]
    ]
  };
 
  await mq.ch.addSetup(async (ch: ConfirmChannel) => {
    let payNotifyHandler = await MQ.delayTask(ch, delayConfig);
    let start = new Date();
    return Promise.all([
      ...payNotifyHandler,
      mq.consumeRetry(ch, delayConfig.deadLetterQueue, async content => {
        console.log(content);
        let now = new Date();
        throw new Error(
          `at [${now}], delay:[${(now.getTime() -
            new Date(content.startAt).getTime()) /
            1000}] test`
        );
      })
    ] as any);
  });
 
  mq.sendToQueueDelayByConfig(delayConfig, {
    startAt: new Date(),
    text: "dealy and retry"
  });
})();

Readme

Keywords

Package Sidebar

Install

npm i amqplib-delay

Weekly Downloads

2

Version

0.0.1

License

ISC

Unpacked Size

10.1 kB

Total Files

4

Last publish

Collaborators

  • umi-aoi