RabbitMQ বার্তা আকার এবং প্রকার


97
  1. কোন বার্তা রাবিট এমকিউ সারিগুলিতে সংরক্ষণ করা যেতে পারে? কেবল স্ট্রিং? অথবা আমি কী ধরণের সঞ্চয় করতে চাই তা নির্বাচন করতে পারি: ইনট, বাইনারি, স্ট্রিং ইত্যাদি?
  2. একটি বার্তার সর্বাধিক আকার কত?
  3. কত সারি বা এক্সচেঞ্জ তৈরি করা যেতে পারে? বা এটি সার্ভারের শক্তির উপর নির্ভর করে?

উত্তর:


117
  1. তাত্ত্বিকভাবে কোনও বার্তা হিসাবে সংরক্ষণ করা / প্রেরণ করা যায়। আপনি কাতারে আসলে কিছু সঞ্চয় করতে চান না। সিস্টেমগুলি সর্বাধিক দক্ষতার সাথে কাজ করে যদি সারিগুলি বেশিরভাগ সময় খালি থাকে। আপনি দুটি পূর্ব শর্ত দিয়ে কাতারে যা কিছু খুশি পাঠাতে পারেন:

    • আপনি যে জিনিসটি প্রেরণ করছেন তা বাইটস্ট্রিং থেকে রূপান্তরিত হতে পারে
    • গ্রাহক জানে যে এটি কী পাচ্ছে এবং কীভাবে এটি আসল বস্তুতে রূপান্তর করতে পারে

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

  2. বার্তাটির আকারটি সার্ভারে থাকা মেমরির দ্বারা সীমাবদ্ধ থাকে এবং যদি এটি স্থির থাকে তবে বিনামূল্যে এইচডিডি স্থানও। আপনি সম্ভবত খুব বড় বার্তা প্রেরণ করতে চান না; কোনও ফাইল বা ডিবিতে রেফারেন্স প্রেরণ করা ভাল।

    আপনি তাদের পারফরম্যান্সের পদক্ষেপগুলিও পড়তে চাইতে পারেন: http://www.rabbitmq.com/blog/2012/04/17/rabbitmq-performance-measurements-part-1/ http://www.rabbitmq.com/ ব্লগ / 2012/04/25 / খরগোশ-কর্মক্ষমতা-পরিমাপ-অংশ -২ /

  3. সারিগুলি খুব হালকা ওজনযুক্ত, সম্ভবত আপনার সংযোগের সংখ্যার দ্বারা সীমাবদ্ধ থাকবে। এটি সম্ভবত সার্ভারের উপর নির্ভর করবে। এখানে একটি similiar প্রশ্নে কিছু তথ্য হল: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2009-February/003042.html


9

সর্বোচ্চ বার্তার আকার RabbitMQ ছিল 2 GiB সংস্করণ 3.8.0 আগে:

%% Trying to send a term across a cluster larger than 2^31 bytes will
%% cause the VM to exit with "Absurdly large distribution output data
%% buffer". So we limit the max message size to 2^31 - 10^6 bytes (1MB
%% to allow plenty of leeway for the #basic_message{} and #content{}
%% wrapping the message body).
-define(MAX_MSG_SIZE, 2147383648).

তথ্যসূত্র: https://github.com/rabbitmq/rabbitmq-common/blob/v3.7.21/incolve/rabbit.hrl#L279

সংস্করণ 3.8.0 থেকে এটি 512 মাইবি হয়েছে:

%% Max message size is hard limited to 512 MiB.
%% If user configures a greater rabbit.max_message_size,
%% this value is used instead.
-define(MAX_MSG_SIZE, 536870912).

তথ্যসূত্র: https://github.com/rabbitmq/rabbitmq-common/blob/v3.8.0/incolve/rabbit.hrl#L238


4
  1. দেখুন robthewolf এর উত্তর

  2. সর্বাধিক বার্তার আকার 2 জিবি, তবে এই আকারের বার্তাগুলির জন্য পারফরম্যান্স টিউনিং কার্যকর নয়। সর্বোচ্চ বার্তা আকার

  3. রেবিটএমকিউ সার্ভার সফ্টওয়্যার দ্বারা কাতারের সংখ্যার উপর কোনও কঠোর সীমাবদ্ধতা নেই, তবে সার্ভারটি যে হার্ডওয়্যারটিতে চলছে সেগুলি এই সীমাটিকে খুব ভালভাবে প্রভাবিত করতে পারে।

3 এ। ডিফল্টরূপে সার্ভার দ্বারা চাপিত কোনও কিউ দৈর্ঘ্যের সীমা নেই। আপনি তবে সার্ভার-সাইড নীতি (কনফিগারেশন) বা ক্লায়েন্ট সাইড নীতি মাধ্যমে এটি সীমাবদ্ধ করতে পারেন। সর্বাধিক সারি দৈর্ঘ্য

সম্পর্কিত পোস্টে আরও তথ্য এবং লিঙ্ক আছে ।

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