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
'Programming' 카테고리의 다른 글
히스토리를 유지하면서 git 저장소에서 새 저장소로 단일 디렉토리를 이동하려면 어떻게해야합니까? (0) | 2020.08.04 |
---|---|
종료 / 중지 될 때 중요한 변경 위치 API에 대한 동작? (0) | 2020.08.04 |
다른 vi 편집 모드에 대한 다른 bash 프롬프트? (0) | 2020.08.04 |
pip가 버전 10에서 버전 18로 업그레이드 한 이유는 무엇입니까? (0) | 2020.08.04 |
동일한 솔루션 / 프로젝트에서 Visual Studio를 사용하여 32 비트 및 64 비트 모두 대상 (0) | 2020.08.04 |