programing

nodejs에 대한 좋은 메시지 대기열 옵션은 무엇입니까?

cafebook 2023. 8. 6. 10:20
반응형

nodejs에 대한 좋은 메시지 대기열 옵션은 무엇입니까?

node.js로 구축하고 있는 작은 웹 앱에서 메시지 큐를 사용하려고 합니다.나는 레스크를 살펴보았지만 그것이 적절한지 확신할 수 없습니다.목표는 socketio를 사용하여 백엔드 및 기타 클라이언트 작업을 기반으로 클라이언트에 알림을 푸시하는 것입니다.저는 socketio만으로도 이것을 할 수 있지만, 적절한 메시지 큐가 이것을 더 깨끗하게 만들어 줄 것이라고 생각했고, 저는 바퀴를 재창조할 필요가 없을 것이라고 생각했습니다.

밖에 있는 선택지는 무엇입니까?

lightningfast node_redis 클라이언트에서 redis를 사용할 수 있습니다.서브 의미론도 내장되어 있습니다.

노드 STOMP 클라이언트를 사용할 수 있습니다.이를 통해 다음과 같은 다양한 메시지 대기열과 통합할 수 있습니다.

  • 액티브MQ
  • 래빗MQ
  • 호넷큐

저는 이 도서관을 전에 사용해 본 적이 없어서 그 질을 보증할 수 없습니다.하지만 STOMP는 꽤 간단한 프로토콜이므로 필요하다면 제출하도록 해킹할 수 있다고 생각합니다.

또 다른 옵션은 노드와 함께 beanstalkd를 사용하는 것입니다. beanstalkd는 C로 작성된 매우 빠른 "작업 대기열"이며 위에 나열된 브로커의 기능 유연성이 필요하지 않을 경우 매우 좋습니다.

파렴치한 플러그:저는 제로MQ를 기반으로 구축된 간단하고 확장 가능하며 엄청나게 빠른 작업 대기열인 Bokeh에서 일하고 있습니다.지속적인 작업을 위해 플러그형 데이터 저장소를 지원하며, 현재 메모리 내, Redis 및 Riak가 지원됩니다.이것을 확인해 보세요.

다음은 제가 제안할 수 있는 몇 가지 방법입니다.

node-amqp: 토끼Socket과 결합하여 성공적으로 사용한 MQ 클라이언트.실시간 멀티 플레이어 게임 및 채팅 애플리케이션을 만들기 위한 IO입니다.충분히 믿을만해 보입니다.

zeromq.node: 중개되지 않은 경로로 이동하려면 이를 확인해 볼 가치가 있습니다.기능을 구현하기 위한 작업이 많아지지만 대기 시간이 줄어들고 처리량이 증가할 가능성이 높습니다.

node-busmq - redis가 지원하는 가용성과 확장성이 뛰어난 프로덕션 등급의 메시지 버스입니다.

글로벌 클라우드를 위해 이 모듈을 작성했으며 현재 전 세계 여러 데이터 센터의 프로덕션 환경에 구축되어 있습니다.명명된 대기열, 피어 투 피어 통신, 보장된 전달 및 연합을 지원합니다.

이 모듈을 만든 이유에 대한 자세한 내용은 다음 블로그 게시물을 참조하십시오.메시지 버스에 모두 탑승

저는 Kestrel을 사용해보는 것을 추천합니다, 그것은 빈스톡처럼 빠르고 간단하지만 팬아웃 큐를 지원합니다.미캐시를 말합니다.그것은 스칼라를 사용하여 만들어졌고 트위터에서 사용되었습니다.

는 당신이 필요로 하는 유일한 메시지 큐입니다.

당신은 아마도 그것을 보는 것이 좋을 것입니다.

Node.js에 대한 Redis 단순 메시지 큐

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

node-queue-lib를 봅니다.아마도 당신으로 충분할 것입니다.node.js 및 브라우저를 지원합니다.브로드캐스트 및 라운드 로빈의 두 가지 전달 전략이 있습니다.Javascript만 있습니다.

간단한 예:

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 서비스 버스는 어떻습니까?nodejs를 지원합니다.

소켓이 있는 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

반응형