আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
এই বিষয়টিতে পলিসি ত্রুটির গঠন এবং পলিসি ত্রুটি ঘটলে যে ধরনের ফ্লো ভ্যারিয়েবল সেট হয়, তা বর্ণনা করা হয়েছে। আপনি যদি আপনার প্রক্সিগুলোর জন্য ফল্ট হ্যান্ডলিং ডিজাইন ও ইমপ্লিমেন্ট করেন, তবে এই তথ্য অপরিহার্য।
এই বিষয়টি ধরে নেয় যে Edge-এ ফল্ট হ্যান্ডলিং কীভাবে কাজ করে সে সম্পর্কে আপনার একটি সাধারণ ধারণা আছে এবং ফল্ট রুল কী তা আপনি জানেন। যদি আপনার পর্যালোচনার প্রয়োজন হয়, তাহলে ‘Handling faults’ দেখুন। এখানকার তথ্য আপনাকে ‘Policy error reference’-এ নেভিগেট করতে এবং এটি ব্যবহার করতেও সাহায্য করবে।
ডিফল্ট পলিসি ত্রুটির প্রতিক্রিয়া সম্পর্কে
যখন কোনো পলিসিতে ত্রুটি দেখা দেয়, Edge সাথে সাথে এরর ফ্লো-তে প্রবেশ করে এবং একটি এরর মেসেজ তৈরি করে। সিস্টেম দ্বারা তৈরি এই মেসেজটি একটি JSON অবজেক্ট, যাতে দুটি তথ্য থাকে: একটি errorcode এবং একটি faultstring ।
উদাহরণস্বরূপ:
{ "fault":{ "detail":{ "errorcode":"steps.extractvariables.SourceMessageNotAvailable" }, "faultstring":"foo message is not available for ExtractVariable: ParseJsonResponse" } }
চলুন এই ত্রুটি বার্তাটি দ্রুত বিশ্লেষণ করা যাক:
এররকোডটি একটি প্রিফিক্স এবং একটি এরর নেম নিয়ে গঠিত, যা নিম্নরূপ: [prefix].[error_name] । উপরের উদাহরণে, " steps.extractvariables " হলো প্রিফিক্স এবং SourceMessageNotAvailable " হলো এরর নেম। প্রিফিক্সটি আপনাকে বলে দেয় কোন ধরনের পলিসি এররটি তৈরি করেছে। উপরের উদাহরণে, আপনি বুঝতে পারছেন যে একটি "Extract Variables" পলিসি এররটি তৈরি করেছে এবং এরর নেমটি হলো SourceMessageNotAvailable "।
ফল্টস্ট্রিং- এ ত্রুটির একটি বিবরণ থাকে। ফল্ট স্ট্রিং-এ সাধারণত এমন কিছু সূত্র থাকে যা আপনাকে ত্রুটির কারণ হওয়া নির্দিষ্ট সমস্যাটি খুঁজে পেতে সাহায্য করে, যেমন পলিসির নাম, একটি অমীমাংসিত ভেরিয়েবলের নাম, বা যা কিছু ত্রুটির জন্য দায়ী। উদাহরণস্বরূপ, উপরের ত্রুটির বার্তায়, " foo " হলো পলিসিতে উল্লেখিত একটি অমীমাংসিত মেসেজ ভেরিয়েবলের নাম এবং " ParseJsonResponse " হলো সেই পলিসির নাম যা ত্রুটিটি ঘটিয়েছে।
নীতিগত ত্রুটির জন্য নির্দিষ্ট ভেরিয়েবল
যখন কোনো পলিসি ত্রুটি ঘটে, তখন নির্দিষ্ট ত্রুটি-সম্পর্কিত ফ্লো ভেরিয়েবলগুলো পূরণ করা হয়। ফল্ট হ্যান্ডলিং-এর ক্ষেত্রে এই ভেরিয়েবলগুলো অত্যন্ত কার্যকর। ' ফল্ট হ্যান্ডলিং' নামক টপিকে যেমন ব্যাখ্যা করা হয়েছে, সিস্টেম-সৃষ্ট পলিসি ত্রুটিগুলো শনাক্ত করা এবং পরবর্তীতে একটি কাস্টম ত্রুটি প্রতিক্রিয়া তৈরি করার মতো পদক্ষেপ গ্রহণ করা একটি প্রচলিত অভ্যাস। উদাহরণস্বরূপ, নিরাপত্তার কারণে, আপনি হয়তো ক্লায়েন্টদের Edge-এর ফেরত দেওয়া প্রকৃত ত্রুটি এবং স্ট্যাটাস কোডগুলো দেখা থেকে বিরত রাখতে চাইতে পারেন।
fault.name ভেরিয়েবল
যখন কোনো পলিসি একটি ত্রুটি দেখায়, তখন এটি errorcode-এর error_name অংশটিকে fault.name ফ্লো ভ্যারিয়েবলে সেট করে (যেমনটি পূর্ববর্তী বিভাগে বর্ণনা করা হয়েছে)। শর্তসাপেক্ষে ফল্ট রুলগুলো কার্যকর করার জন্য এই ভ্যারিয়েবলটি ইভ্যালুয়েট করা খুবই সাধারণ একটি বিষয়।
এখানে একটি ফল্ট রুলের উদাহরণ দেওয়া হলো যা fault.name এর মান পরীক্ষা করে:
<faultrule name="VariableOfNonMsgType"<>/faultrule><FaultRule name="Source Message Not Available Fault">
<Step>
<Name>AM-CustomErrorMessage</Name>
<Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition>
</Step>
</FaultRule> মনে রাখার বিষয় হলো যে, যখন কোনো পলিসি একটি ত্রুটি ঘটায়, তখন fault.name ভেরিয়েবলটি সর্বদা ত্রুটির নামে সেট করা হয়।
[prefix].[policy_name].failed ভেরিয়েবল
fault.name ছাড়াও, ডেভেলপাররা সাধারণত আরেকটি ভ্যারিয়েবল চেক করে থাকেন, সেটি হলো [prefix].[policy_name].failed ফ্ল্যাগ, যা কোনো পলিসি এক্সিকিউট হওয়ার সময় true বা false-এ সেট করা হয়। ফল্ট রুলে, এটি কখন true হয় তা আপনাকে চেক করতে হবে — অর্থাৎ, কোনো এরর ঘটেছে কিনা তা দেখতে হবে। [prefix].[policy_name].failed ফ্ল্যাগটি চেক করার জন্য কীভাবে একটি কন্ডিশনাল তৈরি করতে হয়, তা এখানে দেওয়া হলো। এই ভ্যারিয়েবলটি সঠিকভাবে চেক করার জন্য, আপনার দুটি জিনিস জানা প্রয়োজন:
- আপনি যে পলিসিটি যাচাই করছেন তার নাম । এটি পলিসির নেম অ্যাট্রিবিউটের মান, ডিসপ্লে নেম নয়। এই অ্যাট্রিবিউটটি পলিসি ডেফিনিশনের XML-এ সর্বদা অন্তর্ভুক্ত থাকে।
- একটি প্রিফিক্স যা আপনি যে ধরনের পলিসি যাচাই করছেন তার জন্য নির্দিষ্ট। (নিচে আমরা প্রিফিক্সটি কীভাবে খুঁজে বের করতে হয় তা ব্যাখ্যা করব।)
উদাহরণস্বরূপ, এখানে আরেকটি ফল্ট রুলের উদাহরণ দেওয়া হলো। বাইরের কন্ডিশনে লক্ষ্য করুন কিভাবে [prefix].[policy_name].failed ভ্যারিয়েবল নামটি গঠিত হয়েছে। এক্ষেত্রে প্রিফিক্সটি হলো extractvariables এবং পলিসির নামটি হলো ParseJsonResponse । এক্ষেত্রে, ফল্ট রুলটি কেবল তখনই কার্যকর হবে যদি এই ভ্যারিয়েবলটির মান true হয়। আর, এখানে একটি পরামর্শ: যেহেতু ফল্ট রুলে একাধিক ধাপ থাকতে পারে, তাই এই প্যাটার্নটি ফল্ট রুলগুলোকে ব্লকে সাজানোর একটি চমৎকার উপায়।
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="Extract Variable Faults"> <Step> <Name>AM-CustomErrorMessage</Name> <Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition> </Step> <Condition>(extractvariables.ParseJsonResponse.failed = true) </Condition> </FaultRule>
error এবং message ভেরিয়েবল সম্পর্কে
error ভ্যারিয়েবলটি শুধুমাত্র একটি প্রক্সির এরর ফ্লো-তে পাওয়া যায়। আপনি এরর ভ্যারিয়েবল থেকে দরকারি তথ্য পেতে পারেন, যেমন এরর মেসেজ, স্ট্যাটাস কোড, কারণ বাক্যাংশ, ইত্যাদি। এরর ভ্যারিয়েবলের ফরম্যাটিং প্যাটার্নটি হলো:
error.[error_component] = [value]
উদাহরণস্বরূপ:
error.message = "request message is not available for ExtractVariable: ParseJsonResponse "
এবং
error.status.code = "500"
message ভ্যারিয়েবলটি এরর ফ্লো-তেও পাওয়া যায় এবং error ভ্যারিয়েবলের মতোই একই উদ্দেশ্যে ব্যবহার করা যেতে পারে। মেসেজ ভ্যারিয়েবলটি বিশেষ, কারণ এটি প্রাসঙ্গিক। একটি রিকোয়েস্ট ফ্লো-তে, এটি একটি রিকোয়েস্ট ভ্যারিয়েবলের মতো আচরণ করে, এবং একটি রেসপন্স ফ্লো-তে, এটি রেসপন্স ভ্যালু পেতে/সেট করতে ব্যবহার করা যেতে পারে। আপনি যদি আরও জানতে চান, তাহলে মেসেজ ভ্যারিয়েবলের ব্যবহারসমূহ দেখুন।
error এবং message সহ Edge-এর সমস্ত ভেরিয়েবলের তথ্যের জন্য ভেরিয়েবল রেফারেন্স দেখুন।