Java Technologies উদাহরণ সহ Asynchronous Processing গাইড ও নোট

326

সার্ভলেটস (Servlets) হলো Java EE (Jakarta EE) টেকনোলজির একটি অংশ, যা সার্ভার-সাইড প্রোগ্রামিংয়ের জন্য ব্যবহৃত হয়। সার্ভলেটস সাধারণত ক্লায়েন্টের অনুরোধ (HTTP Request) গ্রহণ করে এবং সেই অনুযায়ী একটি রেসপন্স (HTTP Response) তৈরি করে।

Asynchronous Processing সার্ভলেট API-তে Servlet 3.0 থেকে যুক্ত করা হয়েছে। এটি সার্ভলেটকে একসঙ্গে একাধিক অনুরোধ পরিচালনা করতে সাহায্য করে, যেখানে দীর্ঘ সময় ধরে চলমান কাজ (যেমন ডেটাবেস অ্যাক্সেস, ওয়েব সার্ভিস কল ইত্যাদি) ব্লক না করে কার্যকরভাবে হ্যান্ডেল করা যায়।


Asynchronous Processing-এর সুবিধা

  1. উচ্চ কার্যক্ষমতা (High Performance): একাধিক থ্রেড ব্যবহার না করেও কার্যক্ষমতা বৃদ্ধি।
  2. রিসোর্সের কার্যকর ব্যবহার: থ্রেড পুলের উপর চাপ কমায়।
  3. ব্লকিং এড়ানো: দীর্ঘ-সময় ধরে চলমান কাজ সম্পন্ন করার জন্য থ্রেড ব্লক না হয়।

Asynchronous Servlets উদাহরণ

1. সার্ভলেট তৈরি

import java.io.IOException;
import java.io.PrintWriter;
import java.util.concurrent.CompletableFuture;
import javax.servlet.AsyncContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns = "/asyncServlet", asyncSupported = true)
public class AsyncServletExample extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        // Asynchronous Context শুরু
        AsyncContext asyncContext = request.startAsync();

        // Asynchronous কাজ সম্পন্ন করার জন্য CompletableFuture ব্যবহার
        CompletableFuture.runAsync(() -> {
            try {
                // দীর্ঘ সময় ধরে চলমান কাজ (Simulation: 3 সেকেন্ডের ডিলে)
                Thread.sleep(3000);

                // রেসপন্স লেখার সময়
                HttpServletResponse asyncResponse = (HttpServletResponse) asyncContext.getResponse();
                asyncResponse.setContentType("text/plain");
                PrintWriter out = asyncResponse.getWriter();
                out.println("Asynchronous Processing Completed!");

                // কাজ শেষ হলে AsyncContext সম্পন্ন করা
                asyncContext.complete();

            } catch (Exception e) {
                asyncContext.complete();
                throw new RuntimeException(e);
            }
        });
    }
}

কোড বিশ্লেষণ

  1. @WebServlet অ্যানোটেশন:
    • asyncSupported = true সেট করতে হবে, যাতে সার্ভলেট অ্যাসিঙ্ক্রোনাস মোডে কাজ করতে পারে।
  2. request.startAsync():
    • অ্যাসিঙ্ক্রোনাস প্রসেসিং শুরু করে এবং একটি AsyncContext অবজেক্ট প্রদান করে।
  3. CompletableFuture.runAsync:
    • ভারী কাজ বা দীর্ঘ চলমান কাজ ব্যাকগ্রাউন্ডে সম্পন্ন করার জন্য ব্যবহার করা হয়।
  4. asyncContext.complete():
    • কাজ শেষ হলে এটি কল করতে হবে, যাতে সার্ভার থ্রেডটি মুক্ত হয়।

ডেপ্লয়মেন্ট এবং রানের ফলাফল

  1. সার্ভলেট ডেপ্লয় করুন একটি Java EE কম্প্যাটিবল সার্ভারে (যেমন Apache Tomcat)।
  2. ব্রাউজারে http://localhost:8080/asyncServlet এ যান।
  3. ৩ সেকেন্ডের পর রেসপন্স দেখাবে:

    Asynchronous Processing Completed!
    

প্রাসঙ্গিক অ্যাপ্লিকেশন

  1. ডেটাবেস কোয়েরি: ভারী বা দীর্ঘ চলমান ডেটাবেস কোয়েরি পরিচালনা।
  2. ফাইল প্রসেসিং: বড় ফাইল আপলোড বা ডাউনলোড।
  3. থার্ড-পার্টি API কলস: বহিরাগত সার্ভিসের স্লো রেসপন্স ম্যানেজ করা।

আপনার প্রয়োজনে এই উদাহরণ আরও কাস্টমাইজ করা যেতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...