ইভেন্ট-চালিত আর্কিটেকচারে প্রাথমিক অবস্থা কীভাবে পরিচালনা করবেন?


33

একটি ইন ঘটনা-চালিত স্থাপত্য প্রতিটি উপাদানের শুধুমাত্র কাজ করে এমন একটি ইভেন্টের সিস্টেমের মাধ্যমে পাঠানো হয় তখন।

একটি ব্রেক পেডাল এবং একটি ব্রেক লাইট সহ একটি হাইপোথিটিকাল গাড়ি কল্পনা করুন।

  • ব্রেক আলো পালাক্রমে উপর যখন এটি একটি পায় brake_on ইভেন্ট, এবং বন্ধ যখন এটি একটি পায় brake_off ইভেন্ট।
  • ব্রেক প্যাডেল একটি ব্রেক_অন ইভেন্টটি যখন এটি টিপানো হয় এবং যখন এটি প্রকাশিত হয় তখন একটি ব্রেক_ অফ ইভেন্ট প্রেরণ করে

ইতিমধ্যে চাপ দেওয়া ব্রেক প্যাডেল দিয়ে গাড়িটি চালু না হওয়া পর্যন্ত আপনার অবস্থা না হওয়া পর্যন্ত এটি সব ঠিকঠাক । যেহেতু ব্রেক লাইট কখনই ব্রেক_ ইভেন্ট ইভেন্ট পায় নি , এটি বন্ধ থাকবে - স্পষ্টতই একটি অনাকাঙ্ক্ষিত পরিস্থিতি। ডিফল্টরূপে ব্রেক লাইট চালু করা কেবল পরিস্থিতিকে বিপরীত করে।

এই 'প্রাথমিক অবস্থার সমস্যা' সমাধানের জন্য কী করা যেতে পারে?

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

সম্পাদনা 2: @ gbjbaanb এর উত্তর ছাড়াও , আমি এমন একটি সিস্টেমের জন্য যাচ্ছি যেখানে:

  • কাল্পনিক ব্রেক প্যাডেল, আরম্ভের পরে, তার রাজ্যের সাথে একটি ইভেন্ট প্রেরণ করে এবং
  • কাল্পনিক ব্রেক আলোর সূচনা হওয়ার পরে ব্রেক প্যাডেল থেকে একটি ইভেন্টের অনুরোধ করে একটি ইভেন্ট পাঠায়।

এই সমাধানের সাহায্যে উপাদানগুলির মধ্যে কোনও নির্ভরতা নেই, কোনও জাতির শর্ত নেই, বাসি হওয়ার জন্য কোনও বার্তার সারি নেই এবং 'মাস্টার' উপাদান নেই।


2
প্রথম যে বিষয়টি মনে আসে তা হ'ল একটি "সিন্থেটিক" ইভেন্ট তৈরি করা (এটি কল করুন initialize) যাতে প্রয়োজনীয় সেন্সর ডেটা থাকে।
এমএসডব্লিউ

প্যাডেলটি কোনও ব্রেক_প্যাডাল_ ইভেন্ট প্রেরণ করা উচিত নয় এবং প্রকৃত ব্রেকটি ব্রেক_ ইভেন্টটি প্রেরণ করবে? আমি যদি ব্রেকটি কাজ না করে তবে আমার ব্রেকের আলো আসতে চাই না।
বিডিএসএল

3
আমি কি এটি একটি কাল্পনিক উদাহরণ হিসাবে উল্লেখ করেছি? :-) প্রশ্নটি সংক্ষিপ্ত এবং বিন্দুতে রাখার জন্য এটি ভারীভাবে সরল করা হয়েছে।
ফ্র্যাঙ্ক কুষ্টার্স

উত্তর:


32

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

সুতরাং, চলমান সিস্টেমটি নিজেরাই দেখাশোনা করার সময় আমাদের প্রতিটি উপাদানকে নিজেকে শুরু করার জন্য বলার একটি উপায় প্রয়োজন এবং আমাদের ইতিমধ্যে উপাদান নিবন্ধকরণে এমন একটি বিষয় রয়েছে, যেমন শুরুতে মূল সিস্টেমটি প্রতিটি উপাদানকে জানাতে হবে যে এটি এখন নিবন্ধিত (বা প্রতিটি উপাদানকে তার বিবরণ ফিরিয়ে দিতে বলবে যাতে এটি নিবন্ধভুক্ত হতে পারে)। এটি সেই পর্যায়ে যা অংশটি তার প্রারম্ভিক কার্য সম্পাদন করতে পারে এবং বার্তা প্রেরণ করতে পারে যেমন এটি সাধারণ ক্রিয়াকলাপে করতে পারে do

সুতরাং ব্রেক প্যাডেলটি, যখন ইগনিশন শুরু হবে, গাড়ি পরিচালকের কাছ থেকে একটি নিবন্ধকরণ / চেক বার্তা পেত এবং এটি কেবল "আমি এখানে আছি এবং কাজ করছি" বার্তাটি ফিরে আসবে না, তবে এটি তার নিজের অবস্থা পরীক্ষা করে পাঠিয়ে দেবে এই রাজ্যের জন্য বার্তা (যেমন একটি পেডাল হতাশাগ্রস্ত বার্তা)।

সমস্যাটি তখন একটি প্রারম্ভিক নির্ভরতাগুলির মধ্যে পরিণত হয়, যেমন ব্রেক লাইটটি এখনও নিবন্ধভুক্ত করা হয়নি তবে এটি বার্তাটি গ্রহণ করবে না, তবে মূল সিস্টেমটি সূচনা, নিবন্ধকরণ এবং চেক রুটিন সম্পন্ন না হওয়া পর্যন্ত এই সমস্ত বার্তাগুলি সারি রেখে সহজেই সমাধান করা হবে ।

সর্বাধিক উপকারটি হ'ল ইনিশিয়েশনাল হ্যান্ডেল করার জন্য কোনও বিশেষ কোডের প্রয়োজন নেই কেবলমাত্র আপনাকে ইতিমধ্যে লিখতে হবে (ঠিক আছে, যদি ব্রেক প্যাডেল ইভেন্টগুলির জন্য আপনার বার্তা প্রেরণ যদি ব্রেক-প্যাডেল হ্যান্ডলারে থাকে তবে আপনাকে এটিও আপনার প্রারম্ভিক সূচনায় কল করতে হবে , তবে আপনি যদি সেই কোডটি হ্যান্ডলার যুক্তির সাথে খুব বেশি বেঁধে না লিখে থাকেন তবে এটি সাধারণত কোনও সমস্যা নয়) এবং উপাদানগুলির মধ্যে কোনও আন্তঃসংযোগ নয় যা তারা ইতিমধ্যে একে অপরকে সাধারণ হিসাবে প্রেরণ করে except মেসেজ পাসিং আর্কিটেকচারের কারণে খুব ভাল!


1
আমি আপনার উত্তরটি পছন্দ করি, কারণ এটি সমস্ত উপাদানকে ডিউপলড রাখে - এটি এই স্থাপত্যটি বেছে নেওয়ার সবচেয়ে গুরুত্বপূর্ণ কারণ ছিল। যাইহোক, বর্তমানে কোনও আসল 'মাস্টার' উপাদান নেই যা সিদ্ধান্ত দেয় যে সিস্টেমটি একটি 'আরম্ভীকৃত' অবস্থায় রয়েছে - সবকিছু কেবল চলমান শুরু করে। ফলাফল হিসাবে আমার প্রশ্নের সমস্যা আছে। মাস্টার সিদ্ধান্ত নিলে সিস্টেমটি চলছে কিনা, এটি সমস্ত উপাদানগুলিতে একটি 'সিস্টেম আরম্ভিত' ইভেন্ট পাঠাতে পারে, যার পরে প্রতিটি উপাদান তার রাজ্য সম্প্রচার শুরু করে। সমস্যা সমাধান. ধন্যবাদ! (এখন সিস্টেমটি আরম্ভ করা হয়েছে কীভাবে কীভাবে সিদ্ধান্ত নেবেন তা আমি এখনই ফেলে এসেছি ...)
ফ্র্যাঙ্ক কুষ্টার্স

স্ট্যাটাস-আপডেট প্রেরণকারী কীভাবে প্রতিটি বস্তুর কাছ থেকে প্রাপ্ত সাম্প্রতিক আপডেটের উপর নজর রাখে এবং যখনই কোনও নতুন সাবস্ক্রিপশন অনুরোধ আসে, তা কি নতুন গ্রাহককে নিবন্ধিত ইভেন্ট উত্স থেকে প্রাপ্ত সর্বশেষ আপডেটগুলি পাঠিয়েছে?
সুপারক্যাট

সেক্ষেত্রে ইভেন্টগুলির মেয়াদ কখন শেষ হবে সে সম্পর্কে আপনাকেও নজর রাখতে হবে। সমস্ত ইভেন্টগুলি নিবন্ধভুক্ত হতে পারে এমন কোনও নতুন উপাদানগুলির জন্য চিরকাল ধরে রাখার পক্ষে উপযুক্ত নয়।
ফ্র্যাঙ্ক কুষ্টার্স

@ স্পেসেকনারফ ভাল, যে ক্ষেত্রে "সমস্ত কিছু কেবল চলতে শুরু করে" এমন ক্ষেত্রে আপনি উপাদানগুলির মধ্যে নির্ভরতা তৈরি করতে পারবেন না যাতে প্যাডেল আলোর পরে শুরু হয়, আপনাকে কেবল সেগুলি শুরু করতে হবে, যদিও আমি কল্পনা করি যে কিছু তাদের চলমান শুরু করে, তাই চালান সেগুলি 'ডান' ক্রমে (যেমন লিনাক্স স্টার্টআপ আরআইএন স্ক্রিপ্টগুলি সিস্টেমডের আগে যেখানে প্রথমে শুরু করার পরিষেবাটিকে বলা হয় 1.xxx এবং ২ য় নামটি বলা হয় 2.xxx ইত্যাদি)।
gbjbaanb

এর মতো অর্ডার সহ স্ক্রিপ্টগুলি ভঙ্গুর। এতে প্রচুর অন্তর্নিহিত নির্ভরতা রয়েছে। পরিবর্তে, আমি ভাবছিলাম যদি আপনার কোনও 'মাস্টার' উপাদান থাকে, এতে উপাদানগুলির একটি স্ট্যাটিক্যালি কনফিগার করা তালিকা রয়েছে যা চালানো উচিত (@ লাই রায়ান উল্লেখ করেছেন), তখন সমস্ত উপাদান লোড হয়ে গেলে এটি 'প্রস্তুত' ইভেন্ট সম্প্রচার করতে পারে। এর প্রতিক্রিয়ায়, সমস্ত উপাদান তাদের প্রাথমিক অবস্থা সম্প্রচার করে।
ফ্র্যাঙ্ক কুষ্টার্স

4

আপনার একটি সূচনা ইভেন্ট থাকতে পারে যা লোড / স্টার্টআপের উপরে যথাযথভাবে রাজ্যগুলি সেট করে। একাধিক হার্ডওয়্যার টুকরোগুলিহীন সহজ সিস্টেম বা প্রোগ্রামগুলির জন্য এটি আকাঙ্ক্ষিত হতে পারে, তবে একাধিক শারীরিক উপাদান সহ আরও জটিল সিস্টেমগুলির জন্য আপনি একেবারে আরম্ভ না করার মতোই ঝুঁকি চালান - যদি আপনার যোগাযোগের সাথে "ব্রেক ব্রেক" ইভেন্টটি মিস হয় বা হারিয়ে যায় তবে সিস্টেম (উদাহরণস্বরূপ, একটি ক্যান ভিত্তিক সিস্টেম) আপনি অজান্তেই আপনার সিস্টেমটিকে পিছনের দিকে সেট করতে পারেন যেন আপনি ব্রেকটি হতাশাগ্রস্থ করে শুরু করেছেন। আপনার যত বেশি কন্ট্রোলার থাকতে পারে, যেমন একটি গাড়ী সহ, তত বেশি কোনও সম্ভাবনা হাতছাড়া হয়ে যায়।

এটির জন্য অ্যাকাউন্ট করতে, আপনার "ব্রেক অন" যুক্তিটি বার বার "ব্রেক অন" ইভেন্টগুলি প্রেরণ করতে পারে। সম্ভবত প্রতি 1/100 সেকেন্ড বা কিছু। আপনার মস্তিষ্কযুক্ত কোডগুলি এই ইভেন্টগুলির জন্য শোনার জন্য এবং এটিগুলি গ্রহণ করার সাথে সাথে "ব্রেক অন" ট্রিগার করতে পারে। "ব্রেক অন" সংকেত 1/10 সেকেন্ড না পাওয়ার পরে এটি একটি অভ্যন্তরীণ "ব্রেক_অফ" ইভেন্টকে ট্রিগার করে।

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

আপনার শারীরিক সিস্টেমের জটিলতা এইগুলির মধ্যে কোন পদ্ধতির বেশি উপযুক্ত তা নির্ধারণ করবে। আপনার উদাহরণটি একটি যান হিসাবে দেওয়া হয়েছে, আপনি সম্ভবত পরেরগুলির মতো কিছু চাইবেন।

যে কোনও উপায়ে, একটি শারীরিক ব্যবস্থা সহ, আপনি কোনও একক ইভেন্ট সঠিকভাবে গ্রহণ / প্রক্রিয়া করাতে নির্ভর করতে চান না। একটি নেটওয়ার্ক সিস্টেমের সাথে সংযুক্ত মাইক্রোকন্ট্রোলারদের প্রায়শই এই কারণে একটি "আমি বেঁচে আছি" সময়সীমা বেঁধে দেয়।


একটি শারীরিক সিস্টেমে আপনি একটি তারের চালাতেন এবং বাইনারি যুক্তি ব্যবহার করতেন: HIGH ব্রেকটি হতাশাগ্রস্ত এবং LOW ব্রেকটি হতাশ নয়
ratchet freak

@ratchetfreak এই ধরণের জিনিসটির জন্য অনেক সম্ভাবনা রয়েছে। সম্ভবত একটি স্যুইচ এটি পরিচালনা করতে পারে। অন্যান্য অনেক সিস্টেম ইভেন্ট রয়েছে যা এগুলি সহজভাবে পরিচালনা করা হয় না
এন্ডারল্যান্ড

1

এই ক্ষেত্রে, আমি ব্রেকটিকে সহজ / বন্ধ হিসাবে সাধারণ হিসাবে মডেল করব না। বরং আমি "ব্রেক চাপ" ইভেন্ট পাঠাতাম। উদাহরণস্বরূপ, 0 এর চাপটি ইঙ্গিত করবে এবং 100 এর একটি চাপ পুরোপুরি হতাশাগ্রস্ত হবে। সিস্টেম (নোড) নিয়মিত নিয়ন্ত্রক (গুলি) এর জন্য বিরতি চাপের ইভেন্টগুলি নিয়মিত প্রেরণ করত would

সিস্টেমটি শুরু হয়ে গেলে এটি বন্ধ না হওয়া পর্যন্ত চাপের ঘটনাগুলি অর্জন করা শুরু করবে।


1

যদি আপনার একমাত্র রাষ্ট্রীয় তথ্য পাস করার মাধ্যম ইভেন্টগুলির মাধ্যমে হয় তবে আপনি সমস্যায় পড়েছেন। পরিবর্তে, আপনি উভয় সক্ষম হতে হবে:

  1. ব্রেক পেডেলের বর্তমান অবস্থা সম্পর্কে জিজ্ঞাসা করুন এবং
  2. ব্রেক প্যাডেল থেকে "রাষ্ট্র পরিবর্তিত" ইভেন্টের জন্য নিবন্ধন করুন।

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

সিস্টেমটির তাত্ক্ষণিকতার পরে ব্রেক ব্রেকটি বিজ্ঞপ্তিগুলি পেতে ব্রেক প্যাডেলের সাথে নিবন্ধন করে এবং ব্রেক প্যাডেলের বর্তমান অবস্থা পড়ে এবং নিজেকে চালু বা বন্ধ করে দেয়।

তারপরে, ব্রেকিং বিজ্ঞপ্তিগুলি তিনটি পদ্ধতির একটিতে প্রয়োগ করা যেতে পারে:

  1. প্যারামিটারলেস হিসাবে "ব্রেকিং প্যাডাল স্টেট পরিবর্তন হয়েছে" ইভেন্টগুলি
  2. "ব্রেকিং পেডালগুলির জুড়ি এখন হতাশাগ্রস্থ" এবং "ব্রেকিং প্যাডেল এখন প্রকাশিত হয়েছে" ইভেন্ট হিসাবে
  3. "হতাশ" বা "প্রকাশিত" প্যারামিটার সহ "নতুন ব্রেকিং প্যাডেল স্টেট" ইভেন্ট হিসাবে।

আমি প্রথম পদ্ধতির পছন্দ করি, যার অর্থ বিজ্ঞপ্তিটি পাওয়ার পরে, ব্রেক লাইট কেবল কীভাবে এটি করতে জানে তা করতে হবে: ব্রেক প্যাডেলের বর্তমান অবস্থা পড়ুন এবং নিজেকে চালু বা বন্ধ করুন।


0

ইভেন্ট-চালিত সিস্টেমে (যা আমি বর্তমানে ব্যবহার করি এবং ভালোবাসি), জিনিসগুলি যতটা সম্ভব decoupled রাখা গুরুত্বপূর্ণ মনে করি। সুতরাং এই ধারণাটি মাথায় রেখে, আসুন সঠিকভাবে আবিষ্কার করি।

কিছু ডিফল্ট অবস্থা থাকা জরুরী। আপনার ব্রেক লাইটটি 'অফ' এর ডিফল্ট স্থিতি নেবে এবং আপনার ব্রেক প্যাডালটি 'আপ' এর ডিফল্ট অবস্থানে নিয়ে যাবে। তার পরে যে কোনও পরিবর্তন ঘটবে।

এখন আপনার প্রশ্নের ঠিকানা। আপনার ব্রেক প্যাডেলটি আরম্ভ করা হবে এবং চেপে ধরে রাখা হচ্ছে, ইভেন্টটি জ্বলে উঠেছে, তবে ইভেন্টটি পাওয়ার জন্য কোনও ব্রেক লাইট নেই gine আমি কোনও যুক্তি শুরুর আগে পৃথক পদক্ষেপ হিসাবে অবজেক্টগুলির তৈরি (যেখানে ইভেন্ট শ্রোতারা সূচনা হবে) আলাদা করা সবচেয়ে সহজ খুঁজে পেয়েছি । এটি বর্ণিত যে কোনও জাতির পরিস্থিতি রোধ করবে।

কার্যকরভাবে একই জিনিসটির জন্য দুটি পৃথক ইভেন্ট ব্যবহার করাও আমার কাছে বিশ্রী মনে হয়brake_offএবং একটি পরামিতি দিয়ে brake_onসরল করা যেতে পারে । সমর্থনকারী ডেটা যুক্ত করে আপনি আপনার ইভেন্টগুলি এভাবে সহজ করতে পারেন।e_brakebool on


0

আপনার যা প্রয়োজন তা হল একটি সম্প্রচার ইভেন্ট এবং বার্তা ইনবক্সগুলি es একটি সম্প্রচার হ'ল এমন একটি বার্তা যা শ্রোতাদের একটি নির্ধারিত সংখ্যায় প্রকাশিত হয়। কোনও উপাদান ব্রডকাস্ট ইভেন্টের জন্য সদস্যতা নিতে পারে তাই এটি কেবল আগ্রহী এমন ইভেন্টগুলি গ্রহণ করে This এটি ডিকপলিং সরবরাহ করে, কারণ প্রেরকের প্রাপকরা কী তা জানতে হবে না to সাবস্ক্রিপশন টেবিলটি উপাদান ইনস্টলেশনের সময় স্থিতিশীলভাবে কনফিগার করা প্রয়োজন (পরিবর্তিত অবস্থায় যখন পরিবর্তিত হয়)। ইনবক্সটি মেসেজ রাউটারের এমন একটি অংশ যা গন্তব্য উপাদানটি অফলাইন থাকা অবস্থায় বার্তাগুলি ধরে রাখতে বাফার হিসাবে কাজ করে।

চালানগুলি ব্যবহার করা একটি সমস্যা নিয়ে আসে, যা ইনবক্স আকার। আপনি চান না যে উপাদানগুলির জন্য সিস্টেমটিকে ক্রমবর্ধমান বার্তা বজায় রাখতে হবে যা আর কখনও অনলাইনে হবে না। এটি বিশেষত কঠোর মেমরির সীমাবদ্ধতার সাথে এম্বেড করা সিস্টেমের সাথে গুরুত্বপূর্ণ। ইনবক্স আকারের সীমাটি অতিক্রম করতে, সমস্ত সম্প্রচারিত বার্তাগুলিকে কয়েকটি বিধি অনুসরণ করা দরকার। বিধিগুলি হ'ল:

  1. প্রতিটি সম্প্রচার ইভেন্টের একটি নাম প্রয়োজন
  2. যে কোনও সময়, সম্প্রচার ইভেন্টের প্রেরকের নির্দিষ্ট নাম সহ কেবলমাত্র একটি সক্রিয় সম্প্রচার থাকতে পারে
  3. ইভেন্টটি দ্বারা সৃষ্ট প্রভাব অবশ্যই আদর্শবান হতে হবে

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

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

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

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