Programming

nodejs에 적합한 메시지 큐 옵션은 무엇입니까?

procodes 2020. 8. 4. 19:45
반응형

nodejs에 적합한 메시지 큐 옵션은 무엇입니까? [닫은]


node.js로 구축하는 작은 웹 응용 프로그램에서 메시지 대기열을 사용하려고합니다. 나는 resque를 보았지만 그것이 적절한 지 확신하지 못했습니다. 목표는 소켓으로 백엔드 및 기타 클라이언트 작업을 기반으로 클라이언트에 알림을 보내는 것입니다. 나는 단지 socketio로 이것을 할 수는 있지만 적절한 메시지 대기열이 이것을 깨끗하게 할 것이라고 생각했으며 바퀴를 재발 명 할 필요가 없었습니다.

어떤 옵션이 있습니까?


lightning fast node_redis 클라이언트 와 함께 redis사용할 수 있습니다 . 내장 된 pubsub 시맨틱도 있습니다.


노드 STOMP 클라이언트를 사용할 수 있습니다 . 이를 통해 다음을 포함한 다양한 메시지 큐와 통합 할 수 있습니다.

  • ActiveMQ
  • RabbitMQ
  • 호넷 큐

이 라이브러리를 사용해 본 적이 없으므로 품질을 보증 할 수 없습니다. 그러나 STOMP는 매우 간단한 프로토콜이므로 필요한 경우 제출에 해킹 할 수 있다고 생각합니다.

또 다른 옵션은 node와 함께 beantalkd 를 사용하는 것 입니다. beanstalkd는 C로 작성된 매우 빠른 "태스크 큐"로 위에 나열된 브로커의 기능 유연성이 필요하지 않은 경우 매우 유용합니다.


뻔뻔한 플러그 : Bokeh에서 작업 중입니다 .ZeroMQ를 기반으로하는 간단하고 확장 가능하며 빠른 작업 대기열입니다. 지속 작업을 위해 플러그 가능한 데이터 저장소를 지원하며 현재 메모리, Redis 및 Riak이 지원됩니다. 확인 해봐.


다음은 몇 가지 권장 사항입니다.

node-amqp : 실시간 멀티 플레이어 게임 및 채팅 응용 프로그램을 만들기 위해 Socket.IO와 함께 성공적으로 사용한 RabbitMQ 클라이언트. 충분히 신뢰할 수있는 것 같습니다.

zeromq.node : 브로커되지 않은 경로를 내려 가려면 살펴볼 가치가 있습니다. 기능을 구현하기 위해 더 많은 노력을 기울이지 만 대기 시간을 줄이고 처리량을 높일 가능성이 높습니다.


node-busmq를 살펴보십시오 . Redis가 지원하는 프로덕션 등급의 고 가용성 및 확장 가능한 메시지 버스입니다.

글로벌 클라우드 용으로이 모듈을 작성했으며 현재 전 세계 여러 데이터 센터의 프로덕션 환경에 배포되어 있습니다. 명명 된 큐, 피어 투 피어 통신, 보장 된 배달 및 페더레이션을 지원합니다.

이 모듈을 만든 이유에 대한 자세한 내용은 다음 블로그 게시물을 참조하십시오. All Aboard The Message Bus


kue 는 필요한 유일한 메시지 큐입니다.


Kestrel 을 사용하는 것이 좋습니다 . Beanstalk만큼 빠르고 간단하지만 팬 아웃 대기열을 지원합니다. memcached를 말합니다. Scala를 사용하여 제작되었으며 Twitter에서 사용됩니다.


당신은보고 싶어 할 수 있습니다

Redis Simple Message Queue for Node.js

Redis를 사용하고 Amazons SQS의 대부분의 기능을 제공합니다.


노드 큐-lib 디렉토리 . 아마도 당신은 충분합니다. node.js 및 브라우저를 지원합니다. 브로드 캐스트와 라운드 로빈이라는 두 가지 전달 전략이 있습니다. 자바 스크립트 만

빠른 예 :

var Queue = require('node-queue-lib/queue.core');

var queue = new Queue('Queue name', 'broadcast');

// subscribe on 'Queue name' messages
queue.subscribe(function (err, subscriber) {
    subscriber.on('error', function(err){
        //
    });
    subscriber.on('data', function (data, accept) {
        console.log(data);
        accept(); // accept process message
    });
});

// publish message
queue.publish('test');

Azure ServiceBus는 어떻습니까? nodejs를 지원합니다.


나는 당신이 설명한대로 socketIO와 함께 KUE를 사용했습니다. 소켓 ID를 작업과 함께 저장 한 다음 작업 완료에서 검색 할 수 있습니다. KUE는 redis를 기반으로 하며 github에 대한 좋은 예가 있습니다.

이 같은....

jobs.process('YourQueuedJob',10, function(job, done){
    doTheJob(job, done);
});


function doTheJob(job, done){
    var socket = io.sockets.sockets[job.data.socketId];
    try {
        socket.emit('news', { status : 'completed' , task : job.data.task });
    } catch(err){
        io.sockets.emit('news', { status : 'fail' , task : job.data.task , socketId: job.data.socketId});
    }
    job.complete();
}

당신은 또한 ewd-qoper8을 확인하고 싶을 수도있다 : https://github.com/robtweed/ewd-qoper8

참고 URL : https://stackoverflow.com/questions/4700935/what-are-good-message-queue-options-for-nodejs

반응형