নোডেজের জন্য ভাল বার্তা সারি বিকল্পগুলি কী কী? [বন্ধ]


112

আমি একটি নোড.জেএস দিয়ে তৈরি করছি এমন একটি ছোট ওয়েব অ্যাপ্লিকেশনটিতে একটি বার্তার সারি ব্যবহার করতে চাইছি আমি রেসকিউয়ের দিকে তাকালাম তবে নিশ্চিত যে এটি উপযুক্ত কিনা। লক্ষ্যটি হ'ল গ্রাহকদের বিজ্ঞপ্তিগুলি ব্যাকএন্ড এবং সোকেটিও সহ অন্যান্য ক্লায়েন্টের ক্রিয়াগুলির উপর ভিত্তি করে push আমি এটি কেবল সোকেটিও দিয়েই করতে পারি তবে আমি ভেবেছিলাম যে কোনও সঠিক বার্তার সারি এই ক্লিনারটিকে তৈরি করবে এবং আমাকে চাকাটি পুনরায় উদ্ভাবন করতে হবে না।

সেখানে কী কী বিকল্প রয়েছে?


2
নিশ্চিত নয়, তবে এটি মনে হচ্ছে নোড নিজে থেকে ভাল করবে!
TK-421

আপনি সম্ভবত এটি সম্পর্কে অবগত আছেন তবে মডিউল পৃষ্ঠায় একটি তালিকাবদ্ধ রয়েছে: github.com/ry/node/wiki/modules#message-queue । আমি অনুমান করি যে আপনার নিজের বিকাশের সময় বিবেচনা করার জন্য এখানে সর্বদা ব্যয় হয়।
TK-421

5
@ টি কে -২২১ এবং জজর্ন টিপলিং আপনার পক্ষে কেবল একটি নোড প্রক্রিয়া থাকা অবধি নোড নিজেই কিছু করতে পারে। আপনার অ্যাপ্লিকেশনের বিভিন্ন অংশের জন্য (যেমন ওয়েবসার্ভার, লেখক সরবরাহকারী, নোটিফ কেন্দ্র ইত্যাদি) বিভিন্ন প্রক্রিয়া থাকলে রেডিসের মতো একটি বাহ্যিক সমাধান প্রয়োজন। এবং অবশ্যই আপনি নন নোড প্রক্রিয়া পাশাপাশি সংযোগ করতে পারেন।
লুই চ্যাট্রিয়ট

1
নোড এএমকিউ এবং খরগোশ এমকিউ (প্রযোজক) জিস্ট.github.com/DarcInc/9641557 এবং (গ্রাহক) gist.github.com/DarcInc/9641582
আইপল

1
আপনার যদি একটি মেমরির সারি প্রয়োজন হয় আপনি এই rxjs- ভিত্তিক সমাধানটি
আন

উত্তর:


51

আপনি বিদ্যুতের দ্রুত নোড_ড্রেস ক্লায়েন্টের সাথে রেডিস ব্যবহার করতে পারেন । এটি এমনকি বিল্ট-ইন করেছে pubsub শব্দার্থবিদ্যা।


7
আমি আরএসএমকিউর মতো রেডিসের শীর্ষে একটি ভাল কুইউনিং মডিউল ব্যবহার করার পরামর্শ দিচ্ছি যা দেখতে খুব সহজ বলে মনে হচ্ছে। npmjs.com/package/rsmq
এক্সিনিফেরিস

যদি আপনি কেবল প্রযুক্তি সংক্রান্ত উদ্বেগগুলি না বাড়িয়েই
অ্যান্ড্রু dh

12

আপনি নোড STOMP ক্লায়েন্ট ব্যবহার করতে পারে । এটি আপনাকে মেসেজের বিভিন্ন সারি সহ বিভিন্ন সাথে সংহত করতে দেয়:

  • ActiveMQ
  • RabbitMQ
  • HornetQ

আমি এই গ্রন্থাগারটি আগে ব্যবহার করি নি, তাই এর মানটির জন্য আমি কোনও প্রমাণ দিতে পারি না। তবে STOMP একটি খুব সহজ প্রোটোকল তাই আমি সন্দেহ করি যে আপনি প্রয়োজনে এটি জমা দেওয়ার জন্য হ্যাক করতে পারেন।

আরেকটি বিকল্প হ'ল নোড সহ বিনস্টালকডি ব্যবহার করা । beanstalkd সি তে লেখা একটি খুব দ্রুত "টাস্ক কাত" যা উপরের তালিকাভুক্ত ব্রোকারদের বৈশিষ্ট্য নমনীয়তার প্রয়োজন না হলে খুব ভাল।


10

লজ্জাহীন প্লাগ: আমি কাজ করছি বোকে : একটি সহজ, পরিবর্ধনযোগ্য ও গন্গনে দ্রুত টাস্ক ZeroMQ নির্মিত কিউ। এটি অবিরাম কাজগুলির জন্য প্লাগযোগ্য ডেটা স্টোর সমর্থন করে, বর্তমানে মেমরির মধ্যে রয়েছে, রেডিস এবং রিয়াক সমর্থিত। এটা দেখ.


10

এখানে আমি বেশ কয়েকটি সুপারিশ করতে পারি:

নোড-অ্যামকিপি : একটি রবিট এমকিউ ক্লায়েন্ট যা আমি সকেট.আইও এর সাথে সম্মিলিতভাবে একটি রিয়েল-টাইম মাল্টি প্লেয়ার গেম তৈরি করতে এবং অন্যান্য জিনিসের মধ্যে চ্যাট অ্যাপ্লিকেশনটি সফলভাবে ব্যবহার করেছি। যথেষ্ট নির্ভরযোগ্য মনে হয়।

zeromq.node : আপনি যদি নন-ব্রোকারড রুটটি নীচে যেতে চান তবে এটি এক নজরে মূল্যবান হতে পারে। কার্যকারিতা বাস্তবায়নের জন্য আরও বেশি কাজ তবে আপনার কম বিলম্ব এবং উচ্চতর থ্রুটপুট পাওয়ার সম্ভাবনা বেশি।


1
জিরোমিকিউ ব্যবহার করতে +1 করুন। বিনস্টালকডি, রেবিটএমকিউ, বিকিউইউ, বুল এবং কিউয়ের সাথে অনেকগুলি গবেষণা এবং সময় কাটানোর পরে, জিরো কিউ আমার জন্য সেরা অভিজ্ঞতা হিসাবে কাজ করেছে, বিশেষত শ্রমিকদের দ্বারা চালিত লাইটওয়েট প্রকল্পগুলির জন্য। এটি বজ্রপাত দ্রুত এবং ডকুমেন্টেশন শীর্ষ খাঁজ। এতে প্রচুর পরিমাণে কল দিয়ে আপনার রেডিস সার্ভারটি বন্ধ না রাখার অতিরিক্ত সুবিধা রয়েছে।
ডিমিগুয়েল

zeromq.node: এখন এখানে বজায় zeromq.js
Marinos একটি

8

নোড-বাসমিকের দিকে একবার নজর দিন - এটি একটি প্রোডাকশন গ্রেড, অত্যন্ত উপলভ্য এবং স্কেলযোগ্য বার্তা বাসটি রেডিসের সাহায্যে সমর্থিত।

আমি আমাদের বিশ্বব্যাপী মেঘের জন্য এই মডিউলটি লিখেছি এবং এটি বর্তমানে আমাদের উত্পাদন পরিবেশে বিশ্বের বিভিন্ন ডেটাসেন্টারে স্থাপন করা হয়েছে। এটি নামের সারি, পিয়ার-টু-পিয়ার যোগাযোগ, গ্যারান্টিযুক্ত বিতরণ এবং ফেডারেশন সমর্থন করে supports

কেন আমরা এই মডিউলটি তৈরি করেছি সে সম্পর্কে আরও তথ্যের জন্য আপনি এই ব্লগ পোস্টটি পড়তে পারেন: সমস্ত বার্তা বার্তা বাসে


6

কিউ হ'ল একমাত্র বার্তা সারি যা আপনার প্রয়োজন হবে


27
কিউ বাদে ভালভাবে রক্ষণাবেক্ষণ করা হয় না, বেশ কয়েকটি সমস্যা রয়েছে এবং একটি টেস্টও নয়!
ভিভিও

4
এছাড়াও, এটি একটি কাজের সারি - কোনও বার্তার সারি নয়
হায়দারআ

এটির বেশ কয়েকটি সমস্যা রয়েছে এবং এটি উত্পাদনের জন্য উপযুক্ত নয়
রাহুল কুমার

1
ব্যবহার bullকরা আমার কাছে আরও সোজা ছিল। kueআমি ডকুমেন্টেশন হারিয়ে গিয়েছিলাম সঙ্গে ।
মেরিনোজ আন

5

আমি কেষ্টরেল চেষ্টা করার পরামর্শ দিচ্ছি , এটি বিয়ানস্টালকের মতো দ্রুত এবং সহজ তবে ফ্যানআউট সারিতে সমর্থন করে। কথা বলে এটি স্কালা ব্যবহার করে নির্মিত এবং টুইটারে ব্যবহৃত হয়েছে।


7
এটি লক্ষণীয় যে কেষ্টরেল আর সক্রিয় বিকাশে নেই।
GordyD

3

আপনি একবার দেখতে চান

নড.জেএস-এর জন্য সাধারণ বার্তার সন্ধান করুন is

যা রেডিস ব্যবহার করে এবং অ্যামাজন এসকিউএস-এর বেশিরভাগ বৈশিষ্ট্য সরবরাহ করে।


1
যদিও আরএসএমকিউটি দুর্দান্ত এবং আমার জন্য একবার প্রোডাকশনে কাজ করছে, সচেতন থাকুন যে এটি রেডিসে লুয়া স্ক্রিপ্ট ব্যবহার করছে এবং রেডিস ক্লাস্টার /
সেন্ডিনেল

2

অ্যাজুরে সার্ভিসবাস সম্পর্কে কীভাবে? এটি নোডেজ সমর্থন করে।


1

নোড-কিউ-liberal এর সংক্ষিপ্ত রূপ । সম্ভবত আপনি যথেষ্ট। এটি নোড.জেএস এবং ব্রাউজারগুলিকে সমর্থন করে। দুটি সরবরাহ কৌশল রয়েছে: সম্প্রচার এবং রাউন্ড-রবিন। কেবল জাভাস্ক্রিপ্ট।

দ্রুত উদাহরণ:

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');

1

আমি কেইউকে সকেটের সাথে ব্যবহার করেছিলাম যেমন আপনার বর্ণিত। আমি সকেটআইডিটি কাজের সাথে সঞ্চয় করেছিলাম এবং কাজটি সম্পূর্ণরূপে এটি পুনরুদ্ধার করতে পারি .. কেইউ রেডিসের উপর ভিত্তি করে এবং গিথুব সম্পর্কে ভাল উদাহরণ রয়েছে

এটার মতো কিছু....

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();
}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.