Idle Connections ম্যানেজমেন্ট এবং Connection Lease টাইম সেট করা

Java Technologies - অ্যাপাচি এইচটিটিপি ক্লায়েন্ট (Apache HTTP Client) Timeouts এবং Connection Management |
148
148

অ্যাপাচি HTTP ক্লায়েন্ট (Apache HTTP Client) এ Idle Connections ম্যানেজমেন্ট এবং Connection Lease টাইম সেট করা গুরুত্বপূর্ণ বিষয় যখন আপনি HTTP অনুরোধে অনেকগুলি সংযোগ পরিচালনা করেন। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন আপনি একাধিক HTTP অনুরোধ চালাচ্ছেন এবং সংযোগগুলি পুনরায় ব্যবহার করতে চান। Idle connections ম্যানেজমেন্ট এবং connection lease টাইম সেট করার মাধ্যমে আপনি সংযোগগুলির জীবনকাল নিয়ন্ত্রণ করতে পারেন, যাতে সিস্টেমের কার্যক্ষমতা উন্নত হয় এবং অব্যবহৃত সংযোগগুলির সংখ্যা কম হয়।

Idle Connections ম্যানেজমেন্ট

Idle connections সেই সংযোগগুলি, যা কিছু সময়ের জন্য কোন কার্যক্রম ছাড়াই "অপেক্ষমাণ" থাকে। অ্যাপাচি HTTP ক্লায়েন্টে এই Idle connections ম্যানেজ করার জন্য PoolingHttpClientConnectionManager ব্যবহৃত হয়। এটি সংযোগগুলি পুনরায় ব্যবহার করতে এবং "নির্বিঘ্ন" থাকতে সাহায্য করে।

Idle Connections নিষ্ক্রিয় করা

PoolingHttpClientConnectionManager-এর closeIdleConnections() মেথড ব্যবহার করে আপনি idle connections নিষ্ক্রিয় করতে পারেন। এছাড়াও, সংযোগগুলি একটি নির্দিষ্ট সময় পরে বন্ধ হতে পারে।

import org.apache.hc.client5.http.impl.classic.PoolingHttpClientConnectionManager;
import org.apache.hc.client5.http.impl.sync.HttpClients;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;

public class ApacheHttpIdleConnectionExample {
    public static void main(String[] args) throws InterruptedException {
        // PoolingHttpClientConnectionManager তৈরি করা
        PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
        
        // Idle connections বন্ধ করার জন্য সময় নির্ধারণ করা (30 সেকেন্ড)
        connectionManager.closeIdleConnections(30, java.util.concurrent.TimeUnit.SECONDS);

        // HTTP ক্লায়েন্ট তৈরি করা
        try (CloseableHttpClient httpClient = HttpClients.custom()
                .setConnectionManager(connectionManager)
                .build()) {

            // এখানে HTTP অনুরোধ পাঠানো যেতে পারে

            // Idle connections বন্ধ করার জন্য পুলিং ম্যানেজার কল করা
            connectionManager.closeExpiredConnections();
            System.out.println("Idle connections বন্ধ করা হয়েছে!");
        }
    }
}

এখানে:

  • closeIdleConnections(30, TimeUnit.SECONDS) মেথডটি 30 সেকেন্ড idle থাকা সংযোগগুলিকে বন্ধ করবে।
  • closeExpiredConnections() মেথডটি অব্যবহৃত সংযোগগুলি ম্যানেজ করবে।

Connection Lease টাইম সেট করা

Connection Lease টাইম সেট করার মাধ্যমে আপনি সংযোগের জীবনকাল নির্ধারণ করতে পারেন। যখন কোনো সংযোগের lease সময় শেষ হয়ে যায়, তখন তা স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে এবং নতুন সংযোগ ব্যবহার করা হবে।

Connection Lease টাইম সেট করা

PoolingHttpClientConnectionManager এর setDefaultMaxPerRoute() এবং setMaxTotal() মেথড ব্যবহার করে সংযোগের পুল এবং লাইফটাইম কনফিগার করা হয়।

import org.apache.hc.client5.http.impl.classic.PoolingHttpClientConnectionManager;
import org.apache.hc.client5.http.impl.sync.HttpClients;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;

public class ApacheHttpClientLeaseExample {
    public static void main(String[] args) throws Exception {
        // PoolingHttpClientConnectionManager তৈরি করা
        PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
        
        // সংযোগের পুল কনফিগার করা
        connectionManager.setDefaultMaxPerRoute(20);  // প্রতিটি রুটের জন্য সর্বোচ্চ 20 সংযোগ
        connectionManager.setMaxTotal(200);            // মোট সর্বোচ্চ 200 সংযোগ

        // Connection lease টাইম সেট করা (10 মিনিট)
        connectionManager.setValidateAfterInactivity(60000); // প্রতি মিনিট পর সংযোগের বৈধতা পরীক্ষা করা

        // HTTP ক্লায়েন্ট তৈরি করা
        try (CloseableHttpClient httpClient = HttpClients.custom()
                .setConnectionManager(connectionManager)
                .build()) {

            // এখানে HTTP অনুরোধ পাঠানো যেতে পারে

            System.out.println("Connection lease এবং idle connection সফলভাবে কনফিগার করা হয়েছে!");
        }
    }
}

Connection Lease কনফিগারেশন ব্যাখ্যা:

  • setDefaultMaxPerRoute(): প্রতি রুটে সর্বোচ্চ কতটি সংযোগ থাকবে তা নির্ধারণ করা হয়।
  • setMaxTotal(): সার্বিকভাবে সর্বোচ্চ কতটি সংযোগ থাকবে তা নির্ধারণ করা হয়।
  • setValidateAfterInactivity(): নির্দিষ্ট সময় পর সংযোগের বৈধতা পরীক্ষা করা হয়। এটি এক্ষেত্রে প্রতি মিনিটে (60000 মিলিসেকেন্ড) একবার সংযোগ পরীক্ষা করবে।

সারাংশ

অ্যাপাচি HTTP ক্লায়েন্টে Idle Connections ম্যানেজমেন্ট এবং Connection Lease টাইম সেট করার মাধ্যমে আপনি সংযোগগুলির কার্যক্ষমতা এবং জীবনকাল সঠিকভাবে নিয়ন্ত্রণ করতে পারেন। PoolingHttpClientConnectionManager ব্যবহারের মাধ্যমে সংযোগগুলি পুল করা, idle সংযোগগুলি নিষ্ক্রিয় করা এবং সংযোগের lease টাইম নির্ধারণ করা যায়, যা সার্ভারের ওপর চাপ কমাতে সাহায্য করে এবং সংযোগের সুরক্ষা বৃদ্ধি করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion