Job Parameters এবং JobExecutionContext

Spring Batch Job Configuration - স্প্রিং ব্যাচ (Spring Batch) - Java Technologies

359

স্প্রিং ব্যাচ (Spring Batch) একটি শক্তিশালী ফ্রেমওয়ার্ক যা ব্যাচ প্রসেসিংয়ের জন্য ব্যবহৃত হয়। এর মাধ্যমে আমরা একটি বা একাধিক স্টেপে কাজ করতে পারি এবং প্রতিটি কাজের মধ্যে প্রক্রিয়া নির্ধারণ করতে পারি। এই প্রক্রিয়াগুলোর মধ্যে Job Parameters এবং JobExecutionContext দুটি গুরুত্বপূর্ণ উপাদান, যা ব্যাচ প্রসেসের মধ্যে ডেটা শেয়ার এবং কনফিগারেশন পরিচালনা করতে সাহায্য করে। এই দুটি উপাদানকে স্পষ্টভাবে বোঝা গেলে ব্যাচ প্রোসেসিং আরও কার্যকরী এবং নিয়ন্ত্রিত করা যায়।

Job Parameters

Job Parameters হল সেই ভ্যালু যা একটি স্প্রিং ব্যাচ জব চালানোর সময় পাস করা হয়। এগুলি সাধারণত ইনপুট হিসাবে ব্যবহার করা হয় এবং ব্যাচ জবের execution শুরু করার সময় বিভিন্ন প্রপার্টি বা কনফিগারেশন ভ্যালু হিসাবে প্রেরণ করা হয়। Job Parameters এর মাধ্যমে আমরা বিভিন্ন ধরনের ইনপুট কনফিগারেশন বা তথ্য জব এক্সিকিউশন শুরু করার আগে সেট করতে পারি, যেমন— ডেটা ফাইলের লোকেশন, ডেটাবেস কানেকশন ডিটেইলস, সময় বা নির্দিষ্ট কোনও কাস্টম প্যারামিটার।

Job Parameters এর উদাহরণ:

  1. এনভায়রনমেন্ট ভ্যালু: যেমন, প্রোডাকশন অথবা ডেভেলপমেন্ট পরিবেশের জন্য বিভিন্ন প্যারামিটার পাস করা।
  2. ফাইল লোকেশন: কোন ফাইল থেকে ডেটা পড়তে হবে বা কোথায় আউটপুট লিখতে হবে, সে সম্পর্কিত প্যারামিটার।
  3. টাইমস্ট্যাম্প: বিশেষ সময়সীমায় ব্যাচ এক্সিকিউশন চালাতে চান, সে সম্পর্কিত প্যারামিটার।

Job Parameters ব্যবহার করা:

স্প্রিং ব্যাচে Job Parameters ব্যবহার করতে হলে, এগুলোকে JobLauncher এর মাধ্যমে জবকে রান করার সময় পাস করতে হয়। এখানে একটি উদাহরণ দেয়া হলো:

import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class BatchJobRunner {

    @Autowired
    private JobLauncher jobLauncher;

    @Autowired
    private Job myJob;

    public void runJob() throws Exception {
        // Creating job parameters
        JobParameters jobParameters = new JobParametersBuilder()
                .addString("inputFile", "file:/data/input.csv")
                .addLong("timestamp", System.currentTimeMillis())
                .toJobParameters();

        // Running the job with parameters
        jobLauncher.run(myJob, jobParameters);
    }
}

এখানে JobParametersBuilder ব্যবহার করে একটি প্যারামিটার সেট তৈরি করা হয়েছে, যেখানে inputFile এবং timestamp দুটি প্যারামিটার নির্ধারণ করা হয়েছে।

JobExecutionContext

JobExecutionContext হল একটি কনটেক্সট অবজেক্ট যা একটি Job এর execution চলাকালে বা শেষ হওয়ার পর ব্যাচ প্রসেসে প্রয়োজনীয় তথ্য বা অবস্থা (state) সংরক্ষণ করতে ব্যবহৃত হয়। এটি একটি জবের মধ্যে পারস্পরিক অবস্থা বা ডেটা শেয়ার করতে সাহায্য করে এবং এটি কেবল ব্যাচ প্রসেসের চলমান স্টেপগুলির মধ্যে ডেটা শেয়ার করতে ব্যবহৃত হয়।

JobExecutionContext-এর মাধ্যমে, আপনি একটি জবের execution এর সময় প্রয়োজনীয় intermediate ফলাফল বা স্টেট সংরক্ষণ করতে পারেন, যা পরবর্তী স্টেপে কাজে আসতে পারে। একে আপনি মূলত ডেটা ক্যাশিং বা অবস্থা ট্র্যাকিংয়ের জন্য ব্যবহার করতে পারেন।

JobExecutionContext এর ব্যবহার:

যখন একটি জব execution হয়, তখন তার execution সম্পর্কিত বিভিন্ন তথ্য যেমন কাস্টম ডেটা বা inter-step data কে JobExecutionContext এ সংরক্ষণ করা যায়।

import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.core.StepExecutionListener;
import org.springframework.batch.core.annotation.BeforeStep;

public class MyStepListener implements StepExecutionListener {

    @BeforeStep
    public void beforeStep(StepExecution stepExecution) {
        // Accessing JobExecutionContext for storing data
        JobExecution jobExecution = stepExecution.getJobExecution();
        jobExecution.getExecutionContext().put("processedRecords", 0);
    }

    @Override
    public ExitStatus afterStep(StepExecution stepExecution) {
        // Retrieving data from JobExecutionContext after step
        JobExecution jobExecution = stepExecution.getJobExecution();
        Integer processedRecords = (Integer) jobExecution.getExecutionContext().get("processedRecords");

        System.out.println("Total processed records: " + processedRecords);
        return ExitStatus.COMPLETED;
    }
}

এখানে JobExecutionContext এর মধ্যে processedRecords নামে একটি কাস্টম ডেটা স্টোর করা হচ্ছে, যা পরে afterStep মেথডে পুনরায় ব্যবহার করা হচ্ছে।

Job Parameters এবং JobExecutionContext এর মধ্যে পার্থক্য

বৈশিষ্ট্যJob ParametersJobExecutionContext
ব্যবহারজব শুরু করার সময় ইনপুট হিসেবে ব্যবহৃত প্যারামিটার।জব চলাকালে বা শেষে ডেটা বা স্টেট সংরক্ষণের জন্য ব্যবহৃত।
লাইট-ওয়েটহ্যাঁ, এটি সাধারণত স্ট্রিং এবং অন্যান্য প্রিমিটিভ টাইপ প্যারামিটার ধারণ করে।এটি সাধারণত অবজেক্টগুলো ধারণ করে এবং জবের execution চলাকালীন তথ্য রাখে।
ডেটার ধরনস্ট্রিং, লং, ডাবল, ডেট টাইপ ডেটা।কোনো ধরনের অবজেক্ট (যেমন, Integer, List, Map, ইত্যাদি)।
কোন সময় ব্যবহার করা হয়?জব রান করার সময় পাস করা হয়।এক বা একাধিক স্টেপে ডেটা শেয়ার করতে ব্যবহৃত হয়।

সারাংশ

Job Parameters এবং JobExecutionContext দুটি অত্যন্ত গুরুত্বপূর্ণ উপাদান যা স্প্রিং ব্যাচে ব্যাচ প্রসেসিংকে আরো গতিশীল এবং কার্যকরী করে তোলে। Job Parameters ব্যবহার করে আপনি ব্যাচ জব চালানোর জন্য প্রয়োজনীয় ইনপুট প্যারামিটার পাস করতে পারেন, আর JobExecutionContext ব্যবহারের মাধ্যমে আপনি ব্যাচ জব চলাকালে বা শেষে স্টেট বা মধ্যবর্তী ডেটা সংরক্ষণ করতে পারেন। এই দুটি উপাদান ব্যাচ প্রোসেসিংয়ের নিয়ন্ত্রণ এবং ফলাফল ট্র্যাকিং সহজ করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...