BullJS로 대기열에 넣기

5340 단어 queuejavascriptbulljs

소개



큐는 스택과 유사하게 요소를 시퀀스에 배치하는 데이터 구조입니다. 차이점은 데이터에 액세스하는 방법론입니다. LIFO 개념을 사용하여 작동합니다. 즉, 스택에 추가되는 마지막 항목이 가장 먼저 액세스되는 항목이 되는 반면 대기열은 FIFO를 사용하여 작동하므로 삽입된 첫 번째 항목이 대기열에서 가장 먼저 제거됩니다.

아래 그림을 찾으십시오.



대기줄



스택

가장 일반적인 작업/작업의 순차적 실행을 개발하는 데 대기열을 사용하는 방법에는 여러 가지가 있습니다. 이를 통해 개발자는 한쪽 끝에 작업을 추가하고 처리 후 다른 쪽 끝에서 대기열에 남겨둘 수 있습니다. 일반적으로 FIFO(First In First Out) 방식으로 작동합니다. 즉, 대기열에 도착한 첫 번째 작업이 대기열에 도착한 다음 작업으로 이동하기 전에 일찍 실행됩니다. 실행 후 작업은 다른 쪽 큐에서 제거됩니다.

적합한 대기열:


  • 많은 양의 작업을 더 작고 관리하기 쉬운 작업으로 나눌 수 있습니다.
  • 특정 작업에 대해 여러 프로세서를 추가할 수 있는 기능을 제공합니다. 대기열에서 작업을 선택하고 실행할 수 있는 여러 소비자를 연결할 수 있음을 의미합니다
  • 보다 복잡한 워크플로는 일관성과 원자성을 보장하는 여러 대기열을 사용하여 쉽게 시각화하고 구현할 수 있습니다.

  • BullJS



    BullJS는 애플리케이션에서 대기열을 구현하는 데 사용할 수 있는 많은 노드 패키지 중 하나입니다. 다른 Queuing 라이브러리와 마찬가지로 FIFO 방법론을 사용합니다.

    npm install bull
    


    Bull은 실행 속도가 매우 빠르며 이를 뒷받침하는 기본 기술로 Redis를 사용한다는 사실 덕분입니다. 이는 큐에서 생성되거나 삽입된 데이터가 더 빠른 읽기 및 쓰기를 위해 메모리에 저장됨을 의미합니다. Redis는 실패, 완료 또는 실패한 작업에 대한 콜백 수신을 돕는 게시/구독 메커니즘도 지원합니다.

    BullJS를 사용한 대기열 구현 예



    이 구현에는 두 부분이 있습니다. 대기열에 추가할 작업을 생성하는 생산자 및 생산자가 추가한 작업을 실행하는 작업을 수행하는 소비자.

    소비자는 작업 실행이 완료되면 생산자에게 알려야 합니다.

    먼저 redis 구성을 정의하십시오.

    const defaultRedisConfig = {
      redis: {
        host: redisHost,
        port: redisPort,
        db: redisDatabaseNumber,
      },
    };
    


    소비자 논리

    // Redis server Configuration 
    const <queue-name> = new Bull("<queue-name>", defaultRedisConfig);
    
    setQueues([
      new BullAdapter(<queue-name>),
      ...
    ]);
    
    // Consumer processing logic
    <queue-name>.process(async (job) => {
       // Processing logic
    });
    


    생산자 논리

    const Bull = require('bull', { redis: defaultRedisConfig });
    const <queue-name> = new Bull('tigo-queue');
    <queue-name>.add(<Job Data>);
    


    이와 유사한 블로그를 보려면 다음에서 ClickPesa 엔지니어링 블로그를 확인하십시오.

    Medium

    Hashnode

    좋은 웹페이지 즐겨찾기