উত্তর:
জেএমএস (অ্যাক্টিভিউকিউ একটি জেএমএস ব্রোকার বাস্তবায়ন) অ্যাসিক্রোনাস অনুরোধ প্রক্রিয়াকরণের অনুমতি দেওয়ার জন্য একটি প্রক্রিয়া হিসাবে ব্যবহার করা যেতে পারে। আপনি এটি করতে ইচ্ছুক হতে পারেন কারণ অনুরোধটি সম্পূর্ণ হতে দীর্ঘ সময় নেয় বা কারণ বেশ কয়েকটি পক্ষ আসল অনুরোধে আগ্রহী হতে পারে। এটি ব্যবহারের আর একটি কারণ হ'ল একাধিক ক্লায়েন্ট (সম্ভাব্য বিভিন্ন ভাষায় লিখিত) জেএমএসের মাধ্যমে তথ্য অ্যাক্সেস করার অনুমতি দেওয়া। অ্যাক্টিভকিউ এখানে একটি ভাল উদাহরণ কারণ আপনি কোনও সি # / জাভা / রুবি ক্লায়েন্টের অ্যাক্সেসের জন্য STOMP প্রোটোকলটি ব্যবহার করতে পারেন।
একটি সত্যিকারের বিশ্ব উদাহরণ হ'ল একটি ওয়েব অ্যাপ্লিকেশন যা কোনও নির্দিষ্ট গ্রাহকের জন্য অর্ডার দেওয়ার জন্য ব্যবহৃত হয়। এই অর্ডার দেওয়ার অংশ হিসাবে (এবং এটি একটি ডাটাবেসে সংরক্ষণ করে) আপনি অতিরিক্ত কিছু কাজ বহন করতে চাইতে পারেন:
এটি করার জন্য আপনার অ্যাপ্লিকেশন কোডটি একটি জেএমএস কাতারে একটি বার্তা প্রকাশ করবে যার মধ্যে একটি অর্ডার আইডি রয়েছে। আপনার কাতারে শোনার আবেদনের একটি অংশ অর্ডার আইড গ্রহণ করে ডাটাবেসে অর্ডারটি সন্ধান করে এবং পরে অন্য একটি তৃতীয় পক্ষের সিস্টেমের সাথে সেই আদেশটি দিয়ে ইভেন্টটির প্রতিক্রিয়া জানাতে পারে। আপনার আবেদনের অন্য একটি অংশটি অর্ডারআইডি নেওয়ার এবং গ্রাহকের কাছে একটি নিশ্চিতকরণ ইমেল প্রেরণের জন্য দায়ী হতে পারে।
দীর্ঘমেয়াদী ক্রিয়াকলাপগুলিকে সংবিধানে প্রক্রিয়া করার জন্য এগুলি সর্বদা ব্যবহার করুন। কোনও ওয়েব ব্যবহারকারী প্রক্রিয়া করার অনুরোধের জন্য 5 সেকেন্ডের বেশি অপেক্ষা করতে চাইবে না। আপনার যদি এটির চেয়ে দীর্ঘতর চলতে থাকে তবে একটি নকশায় হ'ল অনুরোধটি একটি সারিতে জমা দেওয়া এবং তাত্ক্ষণিকভাবে একটি URL টি প্রেরণ করা হবে যা ব্যবহারকারী কাজ শেষ হলে তা পরীক্ষা করতে পারে।
অনেক রিসিভারের কাছ থেকে প্রেরকদের হ্রাস করার জন্য প্রকাশ / সাবস্ক্রাইব করা আরেকটি ভাল কৌশল। এটি একটি নমনীয় আর্কিটেকচার, কারণ গ্রাহকরা প্রয়োজন মতো আসতে পারেন এবং যেতে পারেন।
আমি জেএমএসের জন্য অনেক আশ্চর্যজনক ব্যবহার করেছি:
গ্রাহক পরিষেবার জন্য ওয়েব চ্যাট যোগাযোগ।
ব্যাকএন্ডে ডিবাগ লগিং। সমস্ত অ্যাপ সার্ভারগুলি বিভিন্ন স্তরে ডিবাগ বার্তাগুলি সম্প্রচারিত করে। এরপরে একটি জেএমএস ক্লায়েন্টকে ডিবাগ বার্তাগুলি দেখার জন্য চালু করা যেতে পারে। অবশ্যই আমি সিসলগের মতো কিছু ব্যবহার করতে পারতাম , তবে এটি প্রাসঙ্গিক তথ্যের উপর ভিত্তি করে আউটপুট ফিল্টার করার সমস্ত ধরণের উপায় আমাকে দিয়েছে (অ্যাপ্লিকেশন সার্ভারের নাম, এপিআই কল, লগ স্তর, ইউজারিড, বার্তা প্রকার, ইত্যাদি ...) এর উপর ভিত্তি করে। আমি আউটপুটও রঙিন করেছি।
ফাইলে লগিং ডিবাগ। উপরের মত একই, শুধুমাত্র নির্দিষ্ট টুকরা ফিল্টার ব্যবহার করে টেনে আনা হয়েছিল এবং সাধারণ লগিংয়ের জন্য ফাইলটিতে লগইন করা হয়েছিল।
সতর্ক। আবার উপরের লগিংয়ের জন্য অনুরূপ সেটআপ, নির্দিষ্ট ত্রুটিগুলি অনুসন্ধান করা এবং বিভিন্ন মাধ্যমে লোককে সতর্ক করা (ইমেল, পাঠ্য বার্তা, আইএম, গ্রোল পপ-আপ ...)
গতিশীলভাবে সফ্টওয়্যার ক্লাস্টারগুলি কনফিগার এবং নিয়ন্ত্রণ করছে। প্রতিটি অ্যাপ্লিকেশন সার্ভার একটি "আমাকে কনফিগার করুন" বার্তা সম্প্রচার করবে, তারপরে একটি কনফিগারেশন ডিমন যা সমস্ত ধরণের কনফিগার তথ্য সম্বলিত বার্তার সাথে প্রতিক্রিয়া জানায়। পরে, যদি সমস্ত অ্যাপ্লিকেশন সার্ভারগুলির তাদের কনফিগারেশনগুলি একবারে পরিবর্তন করা প্রয়োজন হয়, তবে এটি কনফিগার ডিমন থেকে করা যেতে পারে।
এবং বিলিং, অর্ডার প্রসেসিং, প্রভিশন, ইমেল উত্পন্নকরণের মতো বিলম্বিত ক্রিয়াকলাপের জন্য সাধারণ - সারিবদ্ধ লেনদেন ...
আপনি যেকোনো জায়গায় বার্তা বিতরণের গ্যারান্টি দিতে চান সেখানে এটি দুর্দান্ত।
বিতরণ (ক) সিঙ্ক্রোনাস কম্পিউটিং।
একটি বাস্তব বিশ্বের উদাহরণ হতে পারে একটি অ্যাপ্লিকেশন-বিস্তৃত বিজ্ঞপ্তি কাঠামো, যা অ্যাপ্লিকেশন ব্যবহারের সময় বিভিন্ন পয়েন্টে স্টেকহোল্ডারদের মেল পাঠায়। সুতরাং অ্যাপ্লিকেশনটি কোনও নির্দিষ্ট বস্তু Producer
তৈরি Message
করে Queue
, এটি একটি নির্দিষ্ট অংশে রেখে , এবং এগিয়ে যাওয়ার মাধ্যমে একটি হিসাবে কাজ করবে ।
এর মধ্যে একটি সেট রয়েছে Consumer
যারা Queue
প্রশ্নে সাবস্ক্রাইব করবে এবং Message
প্রেরিতদের জুড়ে পরিচালনার যত্ন নেবে । নোট করুন যে এই লেনদেন চলাকালীন, Producer
প্রদত্ত কীভাবে Message
পরিচালনা করা হবে তার যুক্তি থেকে গুলিগুলি ডিকোপল করা হয় ।
মেসেজিং ফ্রেমওয়ার্ক (অ্যাক্টিভ কিউ এবং পছন্দগুলি) এস Message
সরবরাহ করে এই জাতীয় লেনদেনের সুবিধার্থে মেরুদণ্ড হিসাবে কাজ করে MessageBroker
।
আমি এটি বিভিন্ন তহবিল পরিচালন ব্যবস্থার মধ্যে ইন্ট্রাডে ট্রেড প্রেরণে ব্যবহার করেছি। দুর্দান্ত প্রযুক্তি মেসেজিং কী তা সম্পর্কে যদি আপনি আরও জানতে চান তবে আমি " এন্টারপ্রাইজ ইন্টিগ্রেশন প্যাটার্নস " বইয়ের পুঙ্খানুপুঙ্খ সুপারিশ করতে পারি । অনুরোধ / জবাব এবং প্রকাশ / সাবস্ক্রাইব করার মতো জিনিসের জন্য কিছু জেএমএস উদাহরণ রয়েছে।
মেসেজিং একীকরণের জন্য একটি দুর্দান্ত সরঞ্জাম।
আমরা এটি অ্যাসিক্রোনাস প্রসেসিং শুরু করতে ব্যবহার করি যা আমরা কোনও বিদ্যমান লেনদেনের সাথে বাধা বা বিরোধ করতে চাই না।
উদাহরণস্বরূপ, বলুন যে আপনি "ব্যয় স্টাফ" এর মতো যুক্তিযুক্ত একটি ব্যয়বহুল এবং খুব গুরুত্বপূর্ণ টুকরো পেয়েছেন, কেনা স্টাফের একটি গুরুত্বপূর্ণ অংশ হবে 'নোটিফ স্টাফ স্টোর'। আমরা নোটিফাই কলকে অ্যাসিক্রোনাস করি যাতে বিজ্ঞপ্তি কলের সাথে জড়িত যে কোনও যুক্তি / প্রসেসিং কেনা ব্যবসায়ের যুক্তি দিয়ে সংস্থানগুলিতে অবরুদ্ধ বা বিতর্ক না করে। শেষ ফলাফল, ক্রয় সম্পূর্ণ, ব্যবহারকারী খুশি, আমরা আমাদের অর্থ পেয়েছি এবং সারিটি গ্যারান্টিযুক্ত ডেলিভারি হওয়ার সাথে সাথে দোকানটি খোলার সাথে সাথে বা কাতারে একটি নতুন আইটেম উপস্থিত হওয়ার সাথে সাথে অবহিত করা হবে।
আমি এটি আমার একাডেমিক প্রকল্পের জন্য ব্যবহার করেছি যা অ্যামাজনের মতোই অনলাইন খুচরা ওয়েবসাইট ছিল। জেএমএস নিম্নলিখিত বৈশিষ্ট্যগুলি পরিচালনা করতে ব্যবহৃত হয়েছিল:
আমাদের প্রধান সার্ভারের সাথে সংযুক্ত একাধিক বাস্তবায়িত দূরবর্তী ক্লায়েন্ট রয়েছে। যদি সংযোগ উপলব্ধ থাকে তবে তারা মূল ডাটাবেস অ্যাক্সেস করতে বা তাদের নিজস্ব ডাটাবেস না ব্যবহার করে। ডেটা ধারাবাহিকতা পরিচালনা করতে, আমরা 2PC প্রক্রিয়া প্রয়োগ করেছি। এর জন্য, আমরা জেএমএসকে এই সিস্টেমগুলির মধ্যে বার্তাগুলি বিনিময় করার জন্য ব্যবহার করেছি অর্থাৎ একজন সমন্বয়কারী হিসাবে অভিনয় করে যারা কাতারে বার্তা পাঠিয়ে প্রক্রিয়া শুরু করবেন এবং অন্যরা আবার সেইভাবে কাতারে বার্তা পাঠিয়ে প্রতিক্রিয়া জানাবে। অন্যরা যেমন ইতিমধ্যে উল্লেখ করেছে, এটি পাব / সাব মডেলের অনুরূপ।
বিভিন্ন বাণিজ্যিক ও একাডেমিক প্রকল্পে জেএমএস ব্যবহার করতে দেখেছি। আপনি যখনই পুরোপুরি ডিকপলড ডিস্ট্রিবিউটড সিস্টেম রাখতে চান জেএমএস সহজেই আপনার ছবিতে আসতে পারে। সাধারণভাবে বলতে গেলে, যখন আপনাকে একটি নোড থেকে আপনার অনুরোধটি প্রেরণের প্রয়োজন হয় এবং আপনার নেটওয়ার্কের কেউ প্রেরককে প্রাপক সম্পর্কে কোনও তথ্য না দিয়ে / তার সাথে যত্ন করে।
আমার ক্ষেত্রে, আমি আমার থিসিসে বার্তা-ওরিয়েন্টেড মিডলওয়্যার (এমওএম) তৈরিতে জেএমএস ব্যবহার করেছি, যেখানে আপনার অনুরোধ হিসাবে নির্দিষ্ট ধরণের অবজেক্ট-ভিত্তিক অবজেক্ট তৈরি করা হয়েছে এবং আপনার প্রতিক্রিয়া হিসাবে অন্যদিকে সংকলিত এবং সম্পাদন করা হয়েছে ।
অ্যাক্টিএমকিউয়ের সাথে একত্রে ব্যবহৃত অ্যাপাচি উটটি এন্টারপ্রাইজ ইন্টিগ্রেশন প্যাটার্নগুলি করার দুর্দান্ত উপায়
আমরা অবিশ্বাস্য নেটওয়ার্কগুলিতে বিপুল সংখ্যক দূরবর্তী সাইটে সিস্টেমের সাথে যোগাযোগের জন্য জেএমএস ব্যবহার করছি are নির্ভরযোগ্য বার্তাপ্রেরণের সাথে মিশ্রিত আলগা সংযোগটি একটি স্থিতিশীল সিস্টেমের ল্যান্ডস্কেপ উত্পাদন করে: প্রতিটি বার্তা পাঠানো হবে যত তাড়াতাড়ি এটি প্রযুক্তিগতভাবে সম্ভব, নেটওয়ার্কে বড় সমস্যাগুলি পুরো সিস্টেমের আড়াআড়িগুলিতে প্রভাব ফেলবে না ...