রাবিটএমকিউ / এএমকিউপি: একক সারিতে, একই বার্তার জন্য একাধিক গ্রাহক?


145

আমি কেবল সাধারণভাবে খরগোশ এমকিউ এবং এএমকিউপি ব্যবহার শুরু করছি।

  • আমার বার্তার একটি সারি রয়েছে
  • আমার একাধিক গ্রাহক রয়েছে, যা আমি একই বার্তায় বিভিন্ন জিনিস করতে চাই ।

বেশিরভাগ রাবিট এমকিউ ডকুমেন্টেশন মনে হয় রাউন্ড-রবিনের উপর দৃষ্টি নিবদ্ধ করা হয়েছে, যেখানে একক গ্রাহক একক বার্তা গ্রাহ্য করেছেন, প্রতিটি গ্রাহকের মধ্যে বোঝা ছড়িয়ে পড়েছে। আমি প্রকৃতপক্ষে এটিই আচরণ করি।

উদাহরণ: প্রযোজকের একক সারি রয়েছে এবং প্রতি 2 সেকেন্ডে বার্তা প্রেরণ করুন:

var amqp = require('amqp');
var connection = amqp.createConnection({ host: "localhost", port: 5672 });
var count = 1;

connection.on('ready', function () {
  var sendMessage = function(connection, queue_name, payload) {
    var encoded_payload = JSON.stringify(payload);  
    connection.publish(queue_name, encoded_payload);
  }

  setInterval( function() {    
    var test_message = 'TEST '+count
    sendMessage(connection, "my_queue_name", test_message)  
    count += 1;
  }, 2000) 


})

এবং এখানে একজন গ্রাহক আছেন:

var amqp = require('amqp');
var connection = amqp.createConnection({ host: "localhost", port: 5672 });
connection.on('ready', function () {
  connection.queue("my_queue_name", function(queue){
    queue.bind('#'); 
    queue.subscribe(function (message) {
      var encoded_payload = unescape(message.data)
      var payload = JSON.parse(encoded_payload)
      console.log('Recieved a message:')
      console.log(payload)
    })
  })
})

যদি আমি দু'বার গ্রাহককে শুরু করি তবে আমি দেখতে পাচ্ছি যে প্রতিটি গ্রাহক রাউন্ড-রবিন আচরণে বিকল্প বার্তা গ্রহণ করছে। উদাহরণস্বরূপ, আমি এক টার্মিনালে 1, 3, 5, অন্যটিতে 2, 4, 6 বার্তা দেখতে পাচ্ছি

আমার প্রশ্নটি হ'ল:

  • আমি কি প্রতিটি গ্রাহককে একই বার্তা পেতে পারি? অর্থাত্, উভয় গ্রাহকই 1, 2, 3, 4, 5, 6 বার্তা পান? এএমকিউ / রাবিটএমকিউতে এটিকে কী বলা হয়? এটি কীভাবে সাধারণত কনফিগার করা হয়?

  • এটি কি সাধারণত হয়? পরিবর্তে আমার একক ভোক্তার সাথে বার্তাটি দুটি পৃথক কাতারে সরিয়ে নেওয়া উচিত?


5
আমি কোনও খরগোশ বিশেষজ্ঞ নই। যাইহোক, আপনার এখন যা আছে তাকে ক্যু বলা হয় তবে আপনি যা চান তা বিষয়গুলি এই টিউটোরিয়ালটি দেখুন: রাবিটেমকিউ / টিউটোরিয়ালস / টিউটোরিয়াল / ফাইভ -পিথন এইচটিএমএল , আরও সারি বনাম সম্পর্কিত বিষয়ে: এমএসডিএন.মিকাইসফেসও / ওয়েবসাইট
আরবানEsc

1
আমি বিশ্বাস করি তিনি আসলে ফ্যানআউট চান যদিও বিষয়গুলি পাশাপাশি কাজ করবে এবং পরে আরও নিয়ন্ত্রণ দেবে।
রোথহোल्फ

ধন্যবাদ @ আরবানআস্ক বিষয়গুলি মনে করে যে কোনও বার্তা একাধিক কাতারে আঘাত পেয়ে সমস্যাটি সমাধান করেছে এবং তাই প্রতিটি কাতার গ্রাহকরা তা গ্রাস করবেন। যা আমার বিশেষ মামলার জন্য আমাকে একাধিক কাতারে / একক গ্রাহক দৃশ্যের দিকে আরও ধার দেয়।
মাইকম্যাকানা

1
2018 এর জন্য (এবং এমনকি 2016 এবং এর আগেও) উত্তরটি হল কাফকা, আইএমও এর মতো কিছু ব্যবহার করা।
ওয়াটসআইনাবক্স

উত্তর:


115

আমি কি প্রতিটি গ্রাহককে একই বার্তা পেতে পারি? অর্থাত্, উভয় গ্রাহকই 1, 2, 3, 4, 5, 6 বার্তা পান? এএমকিউ / রাবিটএমকিউতে এটিকে কী বলা হয়? এটি কীভাবে সাধারণত কনফিগার করা হয়?

না, গ্রাহকরা একই কাতারে থাকলে নয়। রাবিটএমকিউ এর এএমকিউ ধারণা থেকে :

এটি বুঝতে গুরুত্বপূর্ণ যে, এএমকিউ 0-9-1-এ, বার্তাগুলি গ্রাহকদের মধ্যে ভারসাম্যপূর্ণ ভারসাম্যপূর্ণ হয়।

এটি বোঝা যাচ্ছে যে একটি সারির মধ্যে রাউন্ড-রবিন আচরণ দেওয়া আছে , এবং কনফিগারযোগ্য নয়। অর্থাত্, একই বার্তা আইডি একাধিক গ্রাহক দ্বারা পরিচালিত করার জন্য পৃথক সারিতে আবশ্যক।

এটি কি সাধারণত হয়? পরিবর্তে আমার একক ভোক্তার সাথে বার্তাটি দুটি পৃথক কাতারে সরিয়ে নেওয়া উচিত?

না এটি নয়, প্রতিটি গ্রাহক একই বার্তা আইডি পরিচালনা করে এমন একক কিউ / একাধিক গ্রাহক সম্ভব নয়। বার্তাটি দুটি পৃথক পৃথক কাতারে রেখে এক্সচেঞ্জ রুটটি রাখা ভাল।

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

এখানে আমার ফ্যানআউট এক্সচেঞ্জ, প্রেরণ এবং গ্রহণ উভয়ই:

var amqp = require('amqp');
var connection = amqp.createConnection({ host: "localhost", port: 5672 });
var count = 1;

connection.on('ready', function () {
  connection.exchange("my_exchange", options={type:'fanout'}, function(exchange) {   

    var sendMessage = function(exchange, payload) {
      console.log('about to publish')
      var encoded_payload = JSON.stringify(payload);
      exchange.publish('', encoded_payload, {})
    }

    // Recieve messages
    connection.queue("my_queue_name", function(queue){
      console.log('Created queue')
      queue.bind(exchange, ''); 
      queue.subscribe(function (message) {
        console.log('subscribed to queue')
        var encoded_payload = unescape(message.data)
        var payload = JSON.parse(encoded_payload)
        console.log('Recieved a message:')
        console.log(payload)
      })
    })

    setInterval( function() {    
      var test_message = 'TEST '+count
      sendMessage(exchange, test_message)  
      count += 1;
    }, 2000) 
 })
})

1
ফ্যান আউট পরিষ্কারভাবে আপনি কি চেয়েছিলেন। এটি আপনাকে এখানে সহায়তা করবে না, তবে আমি ভেবেছিলাম যে আমি একটি সারির মধ্যে রাউন্ড-রবিন আচরণটি কনফিগারযোগ্য mention int prefetchCount = 1; channel.basicQos(prefetchCount); এটি প্রতিটি গ্রাহককে আগের বার্তাটি শেষ হওয়ার সাথে সাথে একটি বার্তা পাওয়ার অনুমতি দেবে। পরিবর্তে বিকল্প বার্তা প্রাপ্তির। আবার আপনার সমস্যা সমাধান করে না, তবে এটি লোকদের জানার জন্য কার্যকর হতে পারে। ফেয়ার ডিসপ্যাচের অধীনে এখানে http://www.rabbitmq.com
টিউটোরিয়ালস

3
স্পষ্ট করার জন্য: 'ডিফল্ট এক্সচেঞ্জ' নোড-এমএকিপি নির্দিষ্ট নয়। এটি নিম্নলিখিত নিয়মগুলির সাথে সাধারণ এএমকিউ ধারণা: যখন কোনও বার্তা ডিফল্ট এক্সচেঞ্জে প্রকাশিত হয়, তখন রাউটিং কী (যে বার্তাটি প্রকাশিত হয়েছিল) এএমকিপি ব্রোকার দ্বারা সারি নাম হিসাবে বিবেচিত হয়। সুতরাং দেখে মনে হচ্ছে আপনি সরাসরি কাতারে প্রকাশ করতে পারেন। কিন্তু তুমি না. ব্রোকার কেবল কিউ নামের সমান রাউটিং কী সহ ডিফল্ট এক্সচেঞ্জে প্রতিটি কাতারে আবদ্ধ হয়।
রুসলান স্টেলমাচেনকো

2
অ্যাবাচি অ্যাক্টিভমেক জেএমএস বিষয়গুলির কোনও বিকল্প আছে যেখানে খরগোশকে যেখানে কোনও সারি যুক্ত নয় বরং মাল্টিকাস্টিং রয়েছে?
প্যানটোনিস

যদি একই ব্যবহারকারীর একাধিক ডিভাইস থেকে লগইন হয় তবে বার্তাটি কেবল একটি ডিভাইস পায় it কীভাবে এটি সমাধান করা যায় বা কোনও ধারণা দয়া করে?
রফিক

@ রফিককে আপনার এটির জন্য একটি প্রশ্ন জিজ্ঞাসা করা উচিত।
মাইকম্যাকানা

28

শুধু খরগোশ টিউটোরিয়াল পড়ুন । আপনি বিনিময় বার্তা প্রকাশ করেন, সারি নয়; এরপরে এটি যথাযথ কাতারে চালিত হয়। আপনার ক্ষেত্রে, আপনার প্রতিটি ভোক্তার জন্য পৃথক সারিতে বাঁধা উচিত। এইভাবে, তারা সম্পূর্ণরূপে স্বাধীনভাবে বার্তাগুলি গ্রাস করতে পারে।


27

উত্তরগুলির শেষ দু'টি প্রায় সঠিক - আমার কাছে প্রচুর অ্যাপ রয়েছে যা বার্তা উত্পন্ন করে যা বিভিন্ন ভোক্তাদের সাথে শেষ হওয়া দরকার তাই প্রক্রিয়াটি খুব সহজ।

আপনি যদি একই বার্তায় একাধিক গ্রাহক চান তবে নিম্নলিখিত পদ্ধতিটি করুন।

একাধিক সারি তৈরি করুন, প্রতিটি অ্যাপ্লিকেশনের জন্য একটি যা বার্তাটি প্রাপ্ত হয়, প্রতিটি সারি বৈশিষ্ট্যে, amq.direct বিনিময় সহ একটি রাউটিং ট্যাগকে "বাঁধুন"। Amq.direct এ পাঠানোর জন্য আপনার প্রকাশিত অ্যাপ্লিকেশনটি পরিবর্তন করুন এবং রাউটিং-ট্যাগ (কোনও সারি নয়) ব্যবহার করুন। এরপরে এএমকিউপি একই বাঁধাইয়ের মাধ্যমে বার্তার প্রতিটি কাতারে অনুলিপি করবে। একটি যাদুমন্ত্র মত কাজ করে :)

উদাহরণ: ধরা যাক আমার কাছে একটি জেএসএন স্ট্রিং তৈরি হয়েছে, আমি এটিকে রাউটিং ট্যাগ "নতুন বিক্রয়-ক্রম" ব্যবহার করে "amq.direct" এক্সচেঞ্জে প্রকাশ করি, আমার অর্ডার_প্রিন্টার অ্যাপ্লিকেশনটির জন্য একটি সারি রয়েছে যা অর্ডার মুদ্রণ করে, আমার কাছে একটি আছে আমার বিলিং সিস্টেমের জন্য সারি যা আদেশের একটি অনুলিপি প্রেরণ করবে এবং ক্লায়েন্টকে চালিত করবে এবং আমার একটি ওয়েব সংরক্ষণাগার সিস্টেম রয়েছে যেখানে আমি historicতিহাসিক / সম্মতিজনিত কারণে অর্ডারগুলি সংরক্ষণ করি এবং আমার কাছে একটি ক্লায়েন্টের ওয়েব ইন্টারফেস রয়েছে যেখানে অন্যান্য তথ্য আসার সাথে সাথে অর্ডারগুলি ট্র্যাক করা হয় orders একটি আদেশ.

সুতরাং আমার সারিগুলি হ'ল: অর্ডার_প্রিন্টার, অর্ডার_বিলিং, অর্ডার_আর্কাইভ এবং অর্ডার_ ট্র্যাকিং সকলের কাছে "নতুন-বিক্রয়-আদেশ" আবদ্ধ বাধ্যতামূলক ট্যাগ রয়েছে, সমস্ত 4 জনই JSON ডেটা পাবেন।

প্রাপ্তি অ্যাপ্লিকেশনগুলি না জেনে বা যত্ন না করে প্রকাশনা অ্যাপ ছাড়াই ডেটা প্রেরণের এটি একটি আদর্শ উপায়।


8

হ্যাঁ প্রতিটি গ্রাহক একই বার্তা গ্রহণ করতে পারেন। কটাক্ষপাত আছে http://www.rabbitmq.com/tutorials/tutorial-three-python.html http://www.rabbitmq.com/tutorials/tutorial-four-python.html //www.rabbitmq করুন: http। কম / টিউটোরিয়াল / টিউটোরিয়াল-পাঁচ-python.html

বার্তাগুলি রুট করার জন্য বিভিন্ন উপায়ে। আমি জানি তারা অজগর এবং জাভার পক্ষে তবে নীতিগুলি বোঝা ভাল, আপনি কী করছেন তা স্থির করুন এবং তারপরে এটি জেএসে কীভাবে করবেন তা সন্ধান করুন। এর মতো শোনাচ্ছে যে আপনি একটি সাধারণ ফ্যানআউট করতে চান ( টিউটোরিয়াল 3) ) যা এক্সচেঞ্জের সাথে সংযুক্ত সমস্ত কাতারে বার্তা প্রেরণ করে।

আপনি যা করছেন এবং আপনি যা করতে চান তার সাথে পার্থক্যটি মূলত আপনি সেট আপ করতে যাচ্ছেন এবং ফ্যানআউট বিনিময় বা টাইপ করুন। ফ্যানআউট বহির্গমনগুলি সমস্ত সংযুক্ত সারিতে সমস্ত বার্তা প্রেরণ করে। প্রতিটি কাতারে একটি ভোক্তা থাকবে যা পৃথকভাবে সমস্ত বার্তায় অ্যাক্সেস পাবে।

হ্যাঁ এটি সাধারণত করা হয়, এটি এএমপিকিউর অন্যতম বৈশিষ্ট্য।


দুর্দান্ত উত্তর, ব্যতীত 'এটি কি সাধারণভাবে করা হয়?' আমি 'প্রতিটি গ্রাহককে একই বার্তা গ্রহণ করার' কথা উল্লেখ করছিলাম - যা সাধারণত করা হয় না (একই সারিতে থাকা গ্রাহকরা সর্বদা রবিনকে গোল করে)। যথেষ্ট পরিষ্কার না হওয়ার জন্য সম্ভবত আমার দোষ।
মাইকম্যাকানা

আসলে আমি বলার উদ্যোগ নেব যে আপনি এটির জন্য কী ব্যবহার করতে চান তা নির্ভর করে। আপনার কাছে দুটি বুনিয়াদি পছন্দ পাব / সাব বা কাজের সারি রয়েছে। আপনার মূল সেট আপটি একটি কাজের সারি ছিল তবে আপনি যা চেয়েছিলেন তা একটি ফ্যানআউট পাব / সাব। তারা উল্লেখ করে যে এখানে সাধারণ ব্যবহার আপনি যা করতে চান তার উপর সম্পূর্ণ নির্ভরশীল।
রথহোয়েল্ফ 16'12

অবশ্যই, তবে কাজের সারিতে একই বার্তা (যেমন, একই বার্তা আইডি) বিভিন্ন গ্রাহকরা পরিচালনা করেন না - এটি পুরোপুরি গোলাকার রবিন। আবার এটি যথেষ্ট পরিষ্কার না হওয়ার জন্য সম্ভবত আমার দোষ।
মাইকম্যাকানা

আমরা এখানে ক্রস উদ্দেশ্যে কথা বলে মনে হচ্ছে।
রথহোয়েল্ফ

বিভ্রান্তির জন্য দুঃখিত। যদি কাজের সারির কিছু উপায় থাকে যেখানে একই সারিতে গ্রাহকরা একই বার্তা আইডি হ্যান্ডেল করে থাকে তবে দয়া করে আমাকে একটি রেফারেন্সে নির্দেশ করুন। অন্যথায় আমি অন্য কোথাও যা পড়েছি তা বিশ্বাস করতে থাকব।
মাইকম্যাকানা

7

প্রেরণের প্যাটার্নটি এক-একের সম্পর্ক। আপনি যদি একাধিক রিসিভারকে "প্রেরণ" করতে চান তবে আপনার পাব / সাব প্যাটার্নটি ব্যবহার করা উচিত। আরও তথ্যের জন্য http://www.rabbitmq.com/tutorials/tutorial-three-python.html দেখুন ।


3

রাবিটএমকিউ / এএমকিউপি: একক সারি, একই বার্তা এবং পৃষ্ঠা রিফ্রেশের জন্য একাধিক গ্রাহক।

rabbit.on('ready', function () {    });
    sockjs_chat.on('connection', function (conn) {

        conn.on('data', function (message) {
            try {
                var obj = JSON.parse(message.replace(/\r/g, '').replace(/\n/g, ''));

                if (obj.header == "register") {

                    // Connect to RabbitMQ
                    try {
                        conn.exchange = rabbit.exchange(exchange, { type: 'topic',
                            autoDelete: false,
                            durable: false,
                            exclusive: false,
                            confirm: true
                        });

                        conn.q = rabbit.queue('my-queue-'+obj.agentID, {
                            durable: false,
                            autoDelete: false,
                            exclusive: false
                        }, function () {
                            conn.channel = 'my-queue-'+obj.agentID;
                            conn.q.bind(conn.exchange, conn.channel);

                            conn.q.subscribe(function (message) {
                                console.log("[MSG] ---> " + JSON.stringify(message));
                                conn.write(JSON.stringify(message) + "\n");
                            }).addCallback(function(ok) {
                                ctag[conn.channel] = ok.consumerTag; });
                        });
                    } catch (err) {
                        console.log("Could not create connection to RabbitMQ. \nStack trace -->" + err.stack);
                    }

                } else if (obj.header == "typing") {

                    var reply = {
                        type: 'chatMsg',
                        msg: utils.escp(obj.msga),
                        visitorNick: obj.channel,
                        customField1: '',
                        time: utils.getDateTime(),
                        channel: obj.channel
                    };

                    conn.exchange.publish('my-queue-'+obj.agentID, reply);
                }

            } catch (err) {
                console.log("ERROR ----> " + err.stack);
            }
        });

        // When the visitor closes or reloads a page we need to unbind from RabbitMQ?
        conn.on('close', function () {
            try {

                // Close the socket
                conn.close();

                // Close RabbitMQ           
               conn.q.unsubscribe(ctag[conn.channel]);

            } catch (er) {
                console.log(":::::::: EXCEPTION SOCKJS (ON-CLOSE) ::::::::>>>>>>> " + er.stack);
            }
        });
    });

1

আপনি যে আচরণটি চান তা পেতে, প্রতিটি গ্রাহককে তার নিজস্ব কাতারে থেকে গ্রাস করতে হবে। একবারে সমস্ত কাতারে বার্তা পাওয়ার জন্য আপনাকে একটি অ-প্রত্যক্ষ বিনিময় প্রকার (বিষয়, শিরোনাম, ফ্যানআউট) ব্যবহার করতে হবে।


1

আমি যেমন মূল্যায়ন করি তা হ'ল:

  • আমার বার্তাগুলির একটি সারি রয়েছে (বার্তাগুলি প্রাপ্তির জন্য আপনার উত্স, এর নাম দিয়েছিলেন q111)

  • আমার একাধিক গ্রাহক রয়েছে, যা আমি একই বার্তায় বিভিন্ন জিনিস করতে চাই।

আপনার সমস্যাটি এখানে রয়েছে যখন এই সারিটির মাধ্যমে 3 টি বার্তা পাওয়া গেছে, 1 বার্তা গ্রাহক এ দ্বারা গ্রাহক হয়, অন্যান্য গ্রাহকরা বি এবং সি বার্তা 2 এবং 3 গ্রাহক হন যেখানে আপনার কোনও সেটআপের প্রয়োজন যেখানে রবিটম্যাক একই কপিগুলিতে চলে যায় তিনটি সংযুক্ত গ্রাহককে (এ, বি, সি) একসাথে এই তিনটি বার্তা (1,2,3)।

যদিও এটি অর্জনের জন্য অনেকগুলি কনফিগারেশন করা যায়, তবে একটি সহজ উপায় নিম্নলিখিত দুটি পদক্ষেপের ধারণাটি ব্যবহার করা হয়:

  • কাঙ্ক্ষিত সারি (কিউ 111) থেকে বার্তাগুলি তুলতে একটি গতিশীল খরগোশ-বিভক্ত ব্যবহার করুন এবং একটি ফ্যানআউট এক্সচেঞ্জে প্রকাশ করুন (একচেটিয়াভাবে এই উদ্দেশ্যে তৈরি এবং উত্সর্গীকৃত)।
  • প্রতিটি ভোক্তার জন্য একচেটিয়া এবং বেনামে সারি ব্যবহার করে সরাসরি এই ফ্যানআউট এক্সচেঞ্জটি শুনতে আপনার গ্রাহকদের এ, বি এবং সি (যারা সারি (কিউ 111) শুনছিলেন) পুনরায় কনফিগার করুন।

দ্রষ্টব্য: এই ধারণাটি ব্যবহার করার সময় উত্স সারি (q111) থেকে সরাসরি গ্রাস করবেন না, কারণ ইতিমধ্যে গ্রাস করা বার্তাগুলি আপনার ফ্যানআউট এক্সচেঞ্জে স্থানান্তরিত হবে না।

আপনি যদি মনে করেন এটি আপনার সঠিক প্রয়োজনীয়তাটি পূরণ করে না ... আপনার পরামর্শ পোস্ট করতে নির্দ্বিধায় :-)


0

আপনি যদি amqplib লাইব্রেরিটি আমি হিসাবে ব্যবহার করে চলেছি তবে তাদের কাছে প্রকাশ / সাবস্ক্রাইব রব্বিটএমকিউ টিউটোরিয়াল বাস্তবায়নের একটি সহজ উদাহরণ রয়েছে যা আপনি সহজেই পেতে পারেন।


0

আমি মনে করি আপনার ফ্যান-আউট ব্যবহার করে আপনার বার্তা প্রেরণ করা উচিত এক্সচেঞ্জার । এইভাবে আপনি বিভিন্ন গ্রাহকদের জন্য একই বার্তাটি গ্রহণ করতে পারবেন, টেবিলের অধীনে খরগোশ এমকিউ এই নতুন গ্রাহক / গ্রাহকদের প্রত্যেকের জন্য বিভিন্ন সারি তৈরি করছে।

জাভাস্ক্রিপ্টে টিউটোরিয়াল উদাহরণ দেখার জন্য এটি লিঙ্ক is https://www.rabbitmq.com / Html


-1

এই দৃশ্যে একটি আকর্ষণীয় বিকল্প রয়েছে যা আমি এখানে উত্তরগুলিতে পাইনি।

আপনি অন্য গ্রাহকের প্রসেস করার জন্য একটি গ্রাহকের "পুনর্নির্মাণ" বৈশিষ্ট্যযুক্ত বার্তাগুলি ন্যাক করতে পারেন। সাধারণত এটি বলা সঠিক উপায় নয় তবে এটি কারও পক্ষে যথেষ্ট ভাল হবে।

https://www.rabbitmq.com/nack.html

এবং লুপগুলি থেকে সাবধান থাকুন (যখন সমস্ত অনুসারীরা ন্যাক + প্রয়োজনীয় বার্তা দেয় না)!


1
আমি এর বিরুদ্ধে উচ্চ পরামর্শ দেব, কারণ এটি কোনও উপায়ে স্কেল হয় না। ভোক্তাদের জন্য কোনও অর্ডার নেই, আপনি গ্রাহক বি কে গ্যারান্টি দিতে পারবেন না যে এটি দাবি করবে না, গ্রাহক এ এর ​​আগে বার্তাটি গ্রহণ করবে যিনি এটি প্রক্রিয়া করবেন এবং এটি পুনরুদ্ধার করবেন, উল্লিখিত লুপগুলি সমস্যা। আপনি যেমনটি বলেন "এটি সাধারণত সঠিকভাবে কথা বলছে না", এবং আমি এমন কোনও পরিস্থিতির কথা ভাবতে পারি না যেখানে এটি অন্যান্য উত্তরের চেয়ে ভাল হবে।
কেভিন স্ট্রিচার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.