necessary-utils-basic-queue
TypeScript icon, indicating that this package has built-in type declarations

1.3.5 • Public • Published

Necessary Utils | Basic Queue


Version License Downloads Downloads

Getting started

Yarn

yarn add necessary-utils-basic-queue

NPM

npm install necessary-utils-basic-queue --save

Example

import {
  BasicQueue,
  BasicQueueMessage,
  QueueSettings,
} from "necessary-utils-basic-queue";

class ExampleMessage extends BasicQueueMessage {
  public MessageDetail: string;
  constructor(messageDetail: string) {
    this.MessageDetail = messageDetail;
  }
}

/**
 * Queue Created
 */
const queue = new BasicQueue<ExampleMessage>();

/**
 * Consumer Method Registered
 * Auto ACK = true
 */
queue.Consume((message: ExampleMessage) => {
  console.log(message.MessageDetail);
  // Do anything...
}, /*AUTO ACK = */ true);

/**
 * Start Produce
 */
queue.PushMessage(
  new ExampleMessage("Hello. This is my first message on the queue.")
);

How its works ?

Overview

    graph
        Producer1 --> |Message 1| Queue;
        Producer2 --> |Message 2| Queue;
        Producer3 --> |Message 3| Queue;

Queue --> |Messages One by One| Consumer;

Consuming

    flowchart LR
        Producer1 --> |Message 1| Queue;
        Producer1 --> |Message 2| Queue;
        Producer1 --> |Message 3| Queue;
        Queue --> |Next Message| Consumer;
        Consumer --> EndProcess;
        EndProcess --> ACK{Auto Ack is True};
        ACK --> |True| Queue;
        ACK --> |False| WaitAck;
        WaitAck --> Queue;

Interceptors

WhenAnyMessage

Returns exception if message count greater than 0 in the queue object.

Example

queue.Intercept.WhenAnyMessage();

WhenZeroMessage

Returns exception if message count equals 0 in the queue object.

Example

queue.Intercept.WhenZeroMessage();

WhenQueueStopped

Returns exception if queue object is idle position.

Example

queue.Intercept.WhenQueueStopped();

WhenQueueStarted

Returns exception if queue object is not idle position.

Example

queue.Intercept.WhenQueueStarted();

Custom Query

Example

queue.Intercept.When(
  async (
    messageCount: number,
    currentMessage: T | null
  ): Promise<boolean> => {
    const validation = currentMessage.MessageDetail.length == 10;
    return validation;
  }
);

Multiple Using

Example

queue.Intercept.WhenQueueStopped().WhenAnyMessage().***;

Readme

Keywords

Package Sidebar

Install

npm i necessary-utils-basic-queue

Weekly Downloads

0

Version

1.3.5

License

MIT

Unpacked Size

18.7 kB

Total Files

20

Last publish

Collaborators

  • hanifiyildirimdagi