অ্যাপাচি HTTP ক্লায়েন্ট (Apache HTTP Client) একটি জনপ্রিয় লাইব্রেরি, যা HTTP রিকোয়েস্ট পাঠানো এবং সাড়া পাওয়ার জন্য ব্যবহৃত হয়। এটি সিংক্রোনাস (synchronous) এবং অ্যাসিঙ্ক্রোনাস (asynchronous) উভয় রিকোয়েস্ট সমর্থন করে। HttpAsyncClient ব্যবহার করে অ্যাসিঙ্ক্রোনাস রিকোয়েস্ট পাঠানো সম্ভব, যা ইভেন্ট-ড্রিভেন (event-driven) প্রোগ্রামিং মডেল অনুসরণ করে।
HttpAsyncClient এর মৌলিক ধারণা
HttpAsyncClient, অ্যাসিঙ্ক্রোনাস HTTP রিকোয়েস্ট পাঠানোর জন্য ব্যবহৃত হয়। এটি HttpClient এর অ্যাসিঙ্ক্রোনাস ভার্সন, যা নির্দিষ্ট রিকোয়েস্টের জন্য অপেক্ষা না করে অন্য কাজ করতে দেয়। এটি HTTP রিকোয়েস্ট এবং রেসপন্স পরিচালনার জন্য একটি ইভেন্ট-ড্রিভেন প্রোগ্রামিং মডেল ব্যবহার করে।
HttpAsyncClient সেটআপ
এটি ব্যবহার করতে হলে প্রথমে কিছু নির্দিষ্ট ডিপেনডেন্সি প্রকল্পে যোগ করতে হয়। উদাহরণস্বরূপ, Maven ব্যবহার করলে pom.xml ফাইলে নিম্নলিখিত ডিপেনডেন্সি যোগ করতে হবে:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpasyncclient</artifactId>
<version>4.1.4</version>
</dependency>
HttpAsyncClient ব্যবহার করে অ্যাসিঙ্ক্রোনাস রিকোয়েস্ট পাঠানো
এখন, অ্যাসিঙ্ক্রোনাস রিকোয়েস্ট পাঠানোর জন্য HttpAsyncClient ব্যবহার করা যাক। নিচে একটি উদাহরণ কোড দেওয়া হলো:
import org.apache.http.HttpResponse;
import org.apache.http.impl.nio.client.HttpAsyncClients;
import org.apache.http.impl.nio.client.CloseableHttpAsyncClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.concurrent.FutureCallback;
import java.util.concurrent.CountDownLatch;
public class AsyncHttpClientExample {
public static void main(String[] args) throws InterruptedException {
// HttpAsyncClient তৈরি করা
CloseableHttpAsyncClient httpClient = HttpAsyncClients.createDefault();
httpClient.start();
// HTTP GET রিকোয়েস্ট তৈরি করা
HttpGet request = new HttpGet("https://jsonplaceholder.typicode.com/posts");
// অ্যাসিঙ্ক্রোনাস রিকোয়েস্ট পাঠানো
CountDownLatch latch = new CountDownLatch(1);
httpClient.execute(request, new FutureCallback<HttpResponse>() {
@Override
public void completed(HttpResponse result) {
System.out.println("রেসপন্স প্রাপ্ত: " + result.getStatusLine());
latch.countDown();
}
@Override
public void failed(Exception ex) {
System.out.println("রিকোয়েস্ট ব্যর্থ হয়েছে: " + ex.getMessage());
latch.countDown();
}
@Override
public void cancelled() {
System.out.println("রিকোয়েস্ট বাতিল হয়েছে");
latch.countDown();
}
});
// রেসপন্স পাওয়ার জন্য অপেক্ষা করা
latch.await();
// HTTP ক্লায়েন্ট বন্ধ করা
try {
httpClient.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
কোড বিশ্লেষণ
- HttpAsyncClient তৈরি:
HttpAsyncClients.createDefault()ব্যবহার করে একটিHttpAsyncClientঅবজেক্ট তৈরি করা হয়। - রিকোয়েস্ট তৈরি:
HttpGetব্যবহার করে একটি HTTP GET রিকোয়েস্ট তৈরি করা হয়, যা একটি নির্দিষ্ট URL এর দিকে পাঠানো হবে। - FutureCallback: এটি অ্যাসিঙ্ক্রোনাস রিকোয়েস্টের জন্য কলব্যাক ইন্টারফেস। এর মাধ্যমে আপনি রিকোয়েস্ট সম্পূর্ণ হলে, ব্যর্থ হলে বা বাতিল হলে প্রতিক্রিয়া গ্রহণ করতে পারেন।
- CountDownLatch: এটি একটি সিনক্রোনাইজেশন টুল, যা মূল থ্রেডকে অপেক্ষা করতে দেয় যতক্ষণ না অ্যাসিঙ্ক্রোনাস অপারেশন সম্পন্ন হয়।
এই উদাহরণটি HttpAsyncClient ব্যবহার করে একটি অ্যাসিঙ্ক্রোনাস HTTP রিকোয়েস্ট পাঠানোর প্রক্রিয়া ব্যাখ্যা করেছে, যেখানে রেসপন্সের জন্য অপেক্ষা না করে অন্য কাজ করা সম্ভব।