<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمد جواد شکاریان</title>
        <link>https://virgool.io/feed/@m_51481758</link>
        <description>سلام 
من جوادم، پنج ساله دارم کدنویسی می کنم و تخصصم NodeJs و ReactJs هست. با ابزار های زیادی هم کار کردم که تلاش می کنم اینجا اونها رو به شما معرفی کنم!</description>
        <language>fa</language>
        <pubDate>2026-04-15 06:47:34</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/3290849/avatar/4R41c3.jpg?height=120&amp;width=120</url>
            <title>محمد جواد شکاریان</title>
            <link>https://virgool.io/@m_51481758</link>
        </image>

                    <item>
                <title>آپاچی نای فای (apache nifi) قسمت 2</title>
                <link>https://virgool.io/@m_51481758/%D8%A2%D9%BE%D8%A7%DA%86%DB%8C-%D9%86%D8%A7%DB%8C-%D9%81%D8%A7%DB%8C-apache-nifi-%D9%82%D8%B3%D9%85%D8%AA-2-xhp6biiss85e</link>
                <description>قسمت قبلی: در قسمت قبلی کلیات نای فای و بررسی کردیم و در آخر یک مثال زدم که تو اون اطلاعات یک تیبل رو به تیبل دیگه انتقال دادم توضیحات کلی:تو این قسمت می خوام processor های بیشتری رو بررسی کنیم و کاربرد اونها رو به شما توضیح بدم. نکته ی بسیار مهم درباره ی نای فای اینه که یادگیری نای فای فقط به یادگیری کارکرد processor ها بستگی داره و میشه گفت اگه کار با تعداد خاصی از پراسسور ها رو بلد باشیم، می تونیم با نای فای پروژه های بزرگی انجام بدیم. نای فای تعداد زیادی پراسسور داره  (بیشتر از 300 پراسسور) که نیازی نیست همه ی اونها رو بلد باشیم و بسته به نیازمون سراغ پراسسوری میریم که باهاش میشه اون نیاز خاص رو برطرف کرد اما یادگیری بعضی از این پراسسور ها بسیار مهمه و به عنوان یک نای فای کار یا به عنوان کسی که می خواد microservice رو سطح بالا کار کنه باید این پراسسور ها رو حتما بلد باشیم، پس وسواس به خرج ندین که باید همه ی پراسسور ها رو یاد بگیرم چون همچین چیزی ممکن نیست! چون بعضی از این پراسسور ها برای ++c کارها هستش و بهضی از اونها (مثل ExecuteScript ) فقط مخصوص جاوا کارها و پایتون کارها هستش پس نمیشه و یا حتی نیازی نیست همه پراسسور ها رو یاد بگیریم. من تو این مقاله و مقاله های بعدی تلاش می کنم تموم پراسسور های مهم و به شما آموزش بدم.مراحل نصب آپاچی نای فای و لاگین در نای فای: 1. قبل از هر چیزی باید جاوا رو رو کامپیوتر خودتون نصب کنید2. روی این لینک کلیک کنید و apache nifi رو دانلود کنید3. فایل و از حالت فشرده خارج کنید4. بعد از خارج کردن فایل از حالت فشرده، دایرکتوری نای فای رو باز کنید و در همون دایرکتوری ترمینال رو باز کنیدبرای ویندوز shift رو نگه دارید و راست کلیک کنید، بعدش روی open terminal here کلیک کنید (البته دقیقا یادم نیست همینه یا نه چون خیلی وقته دارم با لینوکس کار می کنم!!!)برای لینوکس تو همون دایرکتوری راست کلیک کنید و روی Open Terminal کلیک کنید5. این دستور و توی ترمینال اجرا کنید (بجای username یوزرنیمی که می خواین و قرار بدین و بجای password هم یک پسورد انتخاب کنید و بجای password قرار بدین)bin/nifi set-single-user-credentials &amp;quotusername&amp;quot &amp;quotpassword&amp;quot6. مرورگرتونو باز کنید و این یو ار ال و باز کنید: https://localhost:8443/nifiدقت کنید که قبل از localhost باید https قرار بدین نه http7. تو این صفحه یوزرنیم و پسوردی که توی دستور ترمینال قرار داده بودین رو اینجا قرار بدین و لاگین کنیدمعرفی پراسسور ها:نکته ی مهم: من برای هر پراسسور مهم ترین پراپرتی ها و پراپرتی هایی که حتما باید پر بشن و توضیح میدم و با پر کردن این اینپوت ها میشه پراسسور و اجرا کرد. اگه میخواین تموم اینپوت ها رو مطالعه کنین (که البته من توصیه نمیکنم چون وقتتون تلف میشه و با این وقت میشه کار های بهتری انجام داد) میتونین به داکیومنت نای فای مراجعه کنید یا اگه انگلیسیتون خوبه کنار هر اینپوت یک (؟) قرار داره که اگه روی اون هاور کنید به صورت خلاصه (والبته خیلی خیلی مفید) اون اینپوت رو معرفی میکنه1. پراسسور GetFile: با این پراسسور میشه یک فایل خاص رو باز کرد و نوشته های اون فایل و به عنوان فلو (flow یا همون جریان داده) به پراسسور های بعدی پاس داد.پراپرتی ها:پراپرتی Input Directory: تو این قسمت باید مسیر فایلی که می خوایم بخونیم و قرار بدیم. علاوه بر مسیر فایل میشه دایرکتوری هم قرار داد. اگر دایرکتوری قرار بدیم تموم فایل های اون دایرکتوری ها خونده میشهپراپرتی File Filter: اگر توی اون مسیری که در قسمت بالا توضیح دادم چندین فایل قرار داشته باشه، با الگویی که در این قسمت تعریف میکنیم میشه بعضی از فایل های خاص رو انتخاب کرد مثلا اگه ( * ) قرار بدیم تموم فایل ها خونده میشهپراپرتی Path Filter: اگه بخوایم بجای مسیر فایل، مسیر دایرکتوری قرار تعریف کنیم در این صورت با الگویی که در این قسمت تعریف می کنیم، میشه دایرکتوری ها رو فیلتر کرد و فقط فایل های بعضی از دایرکتوری ها خونده میشه2. پراسسور PutFile: با این پراسسور میتونیم flow رو به صورت فایل ذخیره کنیم. مثلا می تونیم با GetFile یک فایل رو بخونیم و با PutFile این فایل رو تو یک مسیر دیگه قرار بدیمپراپرتی ها:پراپرتی Directory: تو این قسمت مسیری که می خوایم flow در اونجا ذخیره بشه قرار میگیره3. پراسسور ExecuteScript: با این پراسسور میشه یک کد خاص رو اجرا کرد پراپرتی ها:پراپرتی Script Engine: تو این قسمت باید تعیین کنیم کد ما به چه زبونی هست. این زبون ها می تونن پایتون، groovy یا ... باشنپراپرتی Script File: اگه کدهای ما در قالب یک فایل نوشته شده باشن، در این قسمت مسیر اون فایل قرار میگیرهپراپرتی Script Body: اگه بخوایم بجای فایل مستقیما کدهامونو قرار بدیم میشه از این قسمت استفاده کردپراپرتی Module Directory: اگر توی کدهامون از یکسری ماژول خاص استفاده کرده باشیم باید مسیر اون ماژول ها رو در این قسمت قرار بدیم4. پراسسور ExecuteGroovyScrip: با این پراسسور میشه کدهای groovy رو اجرا کرد. این پراسسور هم مثل پراسسور بالا چند تا قسمت داره که مهم ترین اونها Script Body و Script File هستن که کاربردشون مثل  Script Body و Script File تو پراسسور قبلیه5. پراسسور ExecuteSql: با این پراسسور میشه یک کد sql رو روی دیتابیس sql (مثل mysql یا postgresql) اجرا کرد.پراپرتی ها:پراپرتی Database Connection Pooling Service: در این قسمت باید سرویسی که برای ارتباط با دیتابیس ساختیم قرار میگیرهپراپرتی SQL select query: در این قسمت کد sql قرار میگیره مثلا select * from &quot;user&quot; where id = 26. پراسسور GenerateFlowFile: با این پراسسور میشه یک فلو خاص رو ایجاد کرد مثلا میشه یک جیسون ایجاد کرد و اونو به پراسسور های بعدی پاس داد یا حتی میشه کدهای باینری مربوط به یک عکس رو به صورت عکس ذخیره کردپراپرتی ها:پراپرتی Custom Text: در این قسمت flow یی که می خوایم به پراسسور های بعدی پاس بدیم و قرار میگیره مثلا یک جیسون یا یک تکست معمولی قرار میدیمپراپرتی Mime Type: در این قسمت mime type مربوط به flow رو قرار میگیره مثلا برای جیسون application/json یا برای تکست text/plain قرار میگیرهنکته ی بسیار مهم:  اگه بخواین یک پراپرتی تو قسمت attribute نای فای تعریف کنید در تب properties، در قسمت بالا سمت راست روی + کلیک کنید، بعدش یک یک popup ظاهر میشه که باید کلید (مثلا username) و در این قسمت قرار بدین، بعدش روی OK کلیک کنید حالا میتونین در قسمت username مقدار اونو قرار بدین (مثلا javad)7. پراسسور InvokeHTTP: با این پراسسور میشه برای یک یو ار ال خاص یک api فرستاد و ریسپانس و دریافت کرد و به به پراسسور های بعدی پاس دادپراپرتی ها:پراپرتی HTTP Method: در این قسمت نوع متد api را قرار میگیره این موارد می تونن get, post, put و ... باشنپراپرتی HTTP URL: در این قسمت url ی که می خوایم به اون api بفرستیم قرار میگیرهنکته ی بسیار مهم:سوال مهمی که اینجا به وجود میاد اینه که اگه بخوایم header بفرستیم چی؟ مثلا اگه بخوایم توی هدر توکن قرار بدیم باید چکار کنیم؟ برای این کار در تب properties، در قسمت بالا سمت راست روی + کلیک کنید، بعدش یک یک popup ظاهر میشه که باید کلید هدر و قرار بدیم مثلا مینویسیم Authorization، بعدش روی OK کلیک کنید حالا میتونین در قسمت Authorization توکن خودتونو قرار بدین (مثلا Bearer token)8. پراسسور PutSql: با این پراسسور میشه یک فلو خاص رو توی دیتابیس ذخیره کردپراپرتی ها:پراپرتی JDBC Connection Pool: تو این قسمت سرویس مربوط به کانکشن دیتابیس قرار میگیرهپراپرتی SQL Statement: تو این قسمت کوئری خاصی که می خوایم تو دیتابیس اجرا بشه قرار میگیره9. پراسسور QueryDatabaseTable: با این پراسسور میشه یک سری اطلاعات خاص رو از دیتابیس کوئری گرفت و نتیجه رو به پراسسور های بعدی پاس دادپراپرتی ها:پراپرتی Database Connection Pooling Service: تو این قسمت سرویس مربوط به کانکشن دیتابیس قرار میگیرهپراپرتی Table Name: تو این قسمت اسم تیبلی که می خوایم اطلاعاتش و کوئری بگیریم و قرار میدیمپراپرتی Columns to Return: تو این قسمت ستون هایی که میخوایم تو کوئری وجود داشته باشه رو قرار میدیم مثل id,username,email و ...پراپرتی Additional WHERE clause: اگر یک شرط خاص داشته باشیم در این قسمت مینویسیمپراپرتی Custom Query: در این قسمت sql ای که می خوایم توی دیتابیس اجرا بشه قرار میگیرهپراپرتی Maximum-value Columns: این پراپرتی بسیار بسیار مهمه! در این قسمت اسم ستونی را مینویسیم که اطلاعات آن صعودی است مثل updated_at یا created_at یا اگر id به صورت int و صعودی تعریف شود id را قرار میدیم. این کار باعث میشه در هر بار کوئری گرفتن تنها دیتاهایی وجود داشته باشه که در اونها مقدار این ستونی که در این قسمت تعیین کرده ایم بیشتر از بیشترین مقداری باشد که در کوئری قبلی وجود داشته است!! میدونم یکم پیچیده شد!!!بزار با یک مثال توضیح بدم: فرض کنید توی این قسمت id قرار دادم و می خوام از تیبل user (که ستون ها اون id, username و email هست) کوئری بگیرم. فرض کنید توی این تیبل 20 تا دیتا دارم و مقدار id توی این دیتاها  از 1 تا 20 هست. زمانی که من این پراسسور و روشن می کنم این پراسسور با دیتابیس heart beat داره یعنی بعد از یک بازه ی زمانی خاص دوباره از دیتابیس کوئری میگیره. مثلا هر یک ثانیه یک بار از دیتابیس کوئری میگیره (اصلاحا میگن heart beat). بار اول که این پراسسور از دیتابیس کوئری میگیره هر بیست و دیتا برمیداره میاره و بیشرین id رو (که در اینجا 20 هست) ذخیره میکنه. بعد از مدتی دوباره میره از دیتابیس کوئری میگیره ولی فقط دیتاهایی رو میاره که مقدار id اونها بیشتر از 20 باشه یعنی اگر دیتای جدیدی وارد دیتابیس بشه فقط هون دیتاها (که طبیعتا id اونها بیشتر از 20 هست)  تو نتیجه ی برگشتی وجود داره و دوباره بیشترین id و ذخیره میکنه. فرق مهم این پراسسو با پراسسوری مثل ExecuteSql اینه که ExecuteSql هر بار تموم دیتاها رو از کوئری میگیره ولی QueryDatabaseTable تو هر بار کوئری فقط دیتاهای جدید رو کوئری میگیره10. پراسسور ConvertAvroToJson: این پراسسور فرمت Avro رو به json تبدیل میکنه. این پراسسور پراپرتی خاصی نداره و نیازی نیست پراپرتی خاصی براش ست بشهخلاصه:تو این قسمت ده تا از مهم ترین پراسسور های نای فای و بررسی کردیم و فقط چندتا پراسسور دیگه مونده که باید یاد بگیریم. در قسمت یاد گرفتیم که چطوری می تونیم با دیتابیس ارتباط برقرار کنیم و یک کوئری خاص رو توی دیتابیس اجرا کنیم. در قسمت بعدی چند تا دیگه از پراسسور های مهم و به صورت کامل بررسی می کنیم و به شما توضیح میدم که چطوری میشه از تموم پراسسور های نای فای استفاده کردتا قسمت بعدی خدا نگهدار!!!</description>
                <category>محمد جواد شکاریان</category>
                <author>محمد جواد شکاریان</author>
                <pubDate>Fri, 11 Oct 2024 03:18:53 +0330</pubDate>
            </item>
                    <item>
                <title>آپاچی نای فای (apache-nifi) قسمت 1</title>
                <link>https://virgool.io/@m_51481758/%D8%A2%D9%BE%D8%A7%DA%86%DB%8C-%D9%86%D8%A7%DB%8C-%D9%81%D8%A7%DB%8C-apache-nifi-qyuxtavajazy</link>
                <description>سلام خدمت همگی!!!!!در این مقاله می خواهم آپاچی نای فای رو به شما معرفی کنم و تجربیاتی که در استفاده از این ابزار بسیار عالی داشتم رو در اختیار شما بزارم.من حدودا پنج شیش ساله که دارم برنامه نویسی می کنم و زمانی که تقریبا دو سال پیش اسم آپاچی نا فای رو شنیدم و فهمیدم چه کار های بزرگی میشه باهاش انجام داد خیلی تعجب کردم که چرا در مدت چهار سال برنامه نویسی حتی اسم نای فای رو نشنیده بودم واسه همین تصمیم گرفتم این ابزار بسیار عالی رو به شما معرفی کنم چون این ابزار علی رغم بسیار بسیار پر کاربرد بودن بین برنامه نویس های ایرانی زیاد شناخته شده نیست و فقط شرکت هایی که پروژه های بزرگی که با معماری ماژول وار یا میکروسرویس رو انجام میدن با این ابزار آشنا هستن که تعداد این شرکت ها توی ایران زیاد نیست و شاید بعضی از پروژه های دولتی در حدی باشن که از معماری ماژول وار استفاده کنن ( پروژه ی با معماری میکروسرویس فک نکنم تو ایران وجود داشته باشه ).چه کار هایی میشه با نای فای انجام داد؟ اگه بخوام تو یه کلمه بگم همه چی ! مثلاً میشه باهاش وب سرور درست کرد یا میشه باهاش کار postman و انجام داد یعنی واسه یه url خاص api فرستاد و نتیجه رو دریافت کرد ( با پراسسور InvokeHttp ) یا میشه داخل تموم صف های مختلف Kafka یا Rabbitmq یه سری اطلاعات خاصی publish کرد یا با یک صف خاص یا حتی به یک پورت (چه فیزیکی چه مجازی) listen کرد! مثلاً من با بچه‌های c++ شرکتمون یه پروژه داشتیم که باید با نای فای به پورت فیزیکی کارتشبکه listen میکردیم و اطلاعات و به صورت سری دریافت میکردیم و بعدش تبدیلش میکردیم به json و بعد توی کافکا اونو publish میکردیم و تموم این مراحل و با نای فای انجام دادیم (البته کار خیلی سختی بود )!مهم‌ترین کار هایی که با نای فای انجام میدن چیا هستن؟ مهم‌ترین کار برد نای فای کار با دیتابیس های مختلف هستش که توی معماری میکرو سرویس و ماژول وار خیلی استفاده میشه. مثلاً فرض کنید من می خوام یه اپلیکیشن بسازم که هر کسی می تونه داخلش به عنوان ادمین ثبت نام کنه و محصولاتشو بفروشه همچنین یک سری کاربر های عادی هست که می تونن ثبت نام کنن و محصولات و بخرن ( یه چیزی شبیه دیوار ).واسه انجام این کار چهار تا دیتابیس دارم که یکیش mysql هست،دومی redis،سومی postgresql و چهارمی mongodb . فرض کنید من چهار تا سرویس مختلف دارم مثلاً یه سرویس دارم برای ثبت نام ادمین و کاربر های معمولی هستکه به دیتابیس postgres وصله، یه سرویس دارم برای کنترل کردن توکن ها که به دیتابیس redis وصله، سرویس بعدیم مربوط هست به ثبت محصول که به دیتابیس mysql وصله و سرویس آخر مربوط به کار های مالی هست که به mongodb متصل هست.تموم این سرویس ها از هم جدا هستن و هیچ ارتباطی باهم ندارن. فرض کنید یه نفر تو سرویس ثبت نام به عنوان ادمین ثبت نام میکنه این دیتا باید همون موقع توی سه تا دیتابیس دیگه هم وارد بشه چون توی اون سرویس ها باید بدونیم که کی داره از اون سرویس خاص استفاده می کنه و آیا مجوز استفاده از اون سرویس خاص رو داره یا نه! برای این کار میشه از نای فای استفاده کرد! وقتی رکورد جدیدی توی یک دیتابیس وارد میشه بلافاصله اون دیتا رو به دیتابیس های دیگه منتقل میکنه.فرض کنید یک سرویس دیگه هم دارم که به کافکا متصل هست و داره گوش میکنه که اطلاعات جدیدی وارد شده یا نه (اصطلاحاً تو کافکا به گوش کردن میگن consume و به فرستادن اطلاعات میگن publish )پس میام با نای فای به یک دیتابیس خاص گوش میدم (البته برای دیتابیس نای فای گوش نمیده یا اصطلاحاً listen نمیکنه ولی اینجا برای درک بهتر از گوش دادن استفاده کردم) که ببینم محصول جدیدی برای خرید وارد شده یا نه، به محض اینکه کسی محصول جدیدی و برای خرید ثبت کرد با نای فای اطلاعات شخصی خریدار و اطلاعات محصول رو میگیرم و توی کافکا اون اطلاعات و اصطلاحاً publish میکنم، از اون طرف یه سرویس دارم که توی کافکا منتظر هست که ببینه محصول جدیدی publish شده یا نه، بعد از publish شدن محصول با نای فای سرویسی که داره consume میکنه اطلاعات خریدار و اطلاعات محصول رو به شکل ایمیل یا نوتیفیکیشن برای اون ادمین میفرسته تا ادمین مشاوره های لازم رو به خریدار بده!این مثال یک نمونه از هزارانکاری هست که میشه با نای فای انجام داد!توضیحات فنی تر:تعریف processor : جزئی ترین بخش جریان داده ی نای فای هست و هر processor کار خاصی انجام میده. مثلاً یک processor هست که دیتا رو از دیتابیس ها می خونه (مثل ExecuteSql, QueryDatabaseTable البته این دو تا processor یک تفاوت کوچیک دارن که بعداً با جزئیات بیشتری توضیح میدم ) یا یه processor هست که فرمت دیتا رو تغییر میده مثلاً فرمت json  رو تبدیل به csv می کنه یا مثلا فرمت avro رو به json تبدیل میکنه اسم این پراسسور ( یا پردازنده ) ConvertRecord هست یا یک processor دیگه هست که اطلاعات و از داخل json بیرون میکشه و به صورت key و value داخل اتربیوت ذخیره میکنه اسم این پراسسور EvaluateJsonPath هست.عکس پراسسورتعریف Queue: پراسسور ها به وسیله ی queue به هم وصل می‌شوند و نتیجه ی تسک انجام شده توسط پراسسور، بسته به نوع نتیجه از طریق queue به پراسسور بعدی منتقل می‌شود.عکس queue یا صفتعریف Relationship: پراسسور ها (processor) ها بعد از اینکه تسک خاص خودشونو انجام دادن ممکنه انجام تسک موفقیت آمیز بوده باشه ( success  ) و یا شکست‌خورده باشه ( failure )، نکته ی بسیار جالب اینجاست که هر relationship یک queue هست و  بسته به نتیجه ی انجام تسک، نتیجه ( یا همون output ) وارد مسیر ( یا queue ) مربوط به  success می‌شود یا وارد مسیر failure می‌شود.مثلاً من می‌خواهم با استفاده از نای فای از تیبل users در دیتابیس shop کوئری بگیرم برای این کار از پراسسور ExecuteSql استفاده می کنم. اگر عملیات کوئری گرفتن موفقیت آمیز باشد نتیجه وارد مسیر success می‌شود و اگر در طی کوئری گرفتن مشکلی پیش بیاید وارد مسیر failure می‌شود.عکس relationshipتعریف service : یکی از اجزای مهم نای فای است و قابلیت این را دارد که یک سرویس بسازیم و چند بار از آن استفاده کنیم. هر سرویس یک وظیفه ی خاص انجام می‌ده. این وظیفه ممکنه کانکشن به دیتابیس باشه مثلاً یک کانکشن به دیتابیس ‌shop درست می‌کنم و در چندین processor از این سرویس برای وصل شدن به دیتابیس shop استفاده می‌کنم یا مثلاً یک سرویس می‌سازم که وظیفش اینه که فایل‌های csv رو بخونه، یا یک سرویس دیگه می‌سازم که بتونه فایل csv  بنویسه و در چندین پراسسور از آن استفاده می کنیم.عکس serviceتعریف Process group: برای اینکه تسک هایی که انجام میدیم منظم‌تر بشن هر تسک خاص رو می تونیم گروه داخل یک گروه خاص به نام process group قرار بدیم. در داخل هر process group یک چندین پراسسور متصل به هم وجود داره که یک کار خاص رو انجام میدن. البته میتونیم داخل یک process group چند تا process group دیگه بسازیم و توی اونا پروژهمونو قرار بدیم.نای فای چندین بخش دیگه هم داره ( مثل funnel (قیف) که چند تا اطلاعات مختلف و میگیره و با هم ترکیب میکنه و میده به بعدی یا مثلاً label که می تونیم یک سری توضیحات یا یادداشت‌های خاصی و تو بخش‌های مختلف بنویسیم ) که توی دوره تموم این بخش‌ها رو مفصل‌تر بررسی می‌کنیم البته مهم‌ترین بخش‌ها همون موارد بالا هستنیک مثال:توضیح: در مثال بالا پراسسور اول (ExecuteSql) که یک کوئری روی دیتابیس اجرا می کنه و نتیجه ( که همون دیتای کوئری گرفته شده از دیتابیس هست ) رو میده به پراسسور بعدی.  پراسسور ExecuteSql دیتای avro برگشتی رو میده به پراسسور بعدی یعنی ConvertAvroToJson، این پراسسور همون طور که از اسمش پیداست دیتای avro رو از ExecuteSql میگیره و اونو تبدیل میکنه به Json و اونو پاس میده به SplitJson، این پراسسور ( باز هم همون طور که از اسمش مشخصه! ) دیتا ( که یک ارایه از مشخصات کاربر ها مختلف هست ) رو به index های اون ارایه تقسیم میکنه مثلاً یک ارایه از 16 کاربر رو به 16 کاربر جدا از هم تبدیل می کنه و 16 دیتا رو پاس میده به پراسسور بعدی یعنی EvaluateJsonPath این پراسسور هر index رو به key و value تبدیل می کنه (‌ مثلاً firstname: javad  ) و نتیجه رو پاس میده به processor بعدی یعنی ExecuteSql توی این پراسسور یک کوئری نوشتم که دیتای خارج شده از json به وسیله ی EvaluateJsonPath و وارد تیبل linkdin میکنه. البته یک پراسسور دیگه هم هست به اسم PutSql که دیتا رو وارد دیتابیس می کنه و برای وارد کردن دیتا بهتره از این processor استفاده بشه ولی از اونجایی که عادت کردم برای وارد کردن دیتا به دیتابیس از ExecuteSql استفاده می‌کنم که کار قشنگی نیست!فرمت avro یک فرمت باینری هست و چون سرعت انجام query رو چندین برابر میکنه نای فای در پراسسور هاش  از این فرمت استفاده می کنه و دیتای برگشتی از پراسسور ها ( البته فقط پراسسور هایی که با دیتابیس ارتباط دارن ) همیشه فرمت avro هست خلاصه: نای فای و ناسا برای کنترل جریان داده درست کرد. هر پراسسور یک کار خاصی و روی دیتا انجام میده و نتیجه رو میده به پراسسور بعدی.حرف آخر:تو این مقاله آپاچی نای فای معرفی شد و سعی کردم یک معرفی خوب  از این نرم افزار بسیار قوی داشته باشم که امیدوارم به هدفم رسیده باشم. تو آینده ی نزدیک سعی می کنم یک دوره ی جامع از apache nifi تهیه کنم و در اختیار برنامه نویس های عزیز بزارم چون یادگیری این ابزار کمک بسیار زیادی میکنه که یک مرحله به برنامه نویس سطح بالا شدن نزدیک بشیم و درک جامع تر و بهتری از معماری های ماژول وار و  میکروسرویس داشته باشیم که برنامه نویس های کمی به این معماری ها تسلط کامل دارن. </description>
                <category>محمد جواد شکاریان</category>
                <author>محمد جواد شکاریان</author>
                <pubDate>Mon, 07 Oct 2024 15:45:34 +0330</pubDate>
            </item>
            </channel>
</rss>