Local এবং Distributed Transactions

Java Technologies - অ্যাপাচি অ্যাকটিভএমকিউ (Apache ActiveMQ) Transactional Messaging এবং XA Transactions |
146
146

অ্যাপাচি অ্যাকটিভএমকিউ (Apache ActiveMQ) একটি মেসেজ ব্রোকার যা অ্যাসিঙ্ক্রোনাস মেসেজিং এবং ডিস্ট্রিবিউটেড সিস্টেমের জন্য ব্যবহৃত হয়। মেসেজ ট্রান্সফার, ডেটা কনসিস্টেন্সি এবং সিস্টেমের রিলায়েবিলিটি নিশ্চিত করার জন্য Local Transactions এবং Distributed Transactions ব্যবহৃত হয়। এই দুটি ট্রানজেকশন প্রকার অ্যাকটিভএমকিউ-তে মেসেজ প্রক্রিয়া করার সময় মেসেজের ইনটিগ্রিটি এবং রিলায়েবিলিটি নিশ্চিত করতে সাহায্য করে।

Local Transactions

Local Transactions হলো এমন একটি ট্রানজেকশন মেকানিজম যা একটি একক অ্যাক্টিভএমকিউ ব্রোকারে এক বা একাধিক মেসেজ প্রক্রিয়া করার সময় ব্যবহৃত হয়। এটি সাধারণত তখন ব্যবহার হয় যখন প্রোডিউসার এবং কনজিউমার একই অ্যাকটিভএমকিউ ব্রোকারের মধ্যে কাজ করে এবং মেসেজগুলি একটি নির্দিষ্ট কিউ বা টপিকের মধ্যে আদান-প্রদান হয়।

Local Transaction-এর বৈশিষ্ট্য

  • Atomicity: লোকার ট্রানজেকশন সম্পূর্ণভাবে একক ইউনিট হিসেবে কাজ করে, অর্থাৎ, সব অপারেশন একসাথে সফল বা ব্যর্থ হয়।
  • Rollback Support: যদি কোনো কারণে মেসেজ প্রসেসিং ব্যর্থ হয়, তবে পুরো ট্রানজেকশনটি রোলব্যাক (Rollback) করা যায়, যাতে কোনো মেসেজ হারানো না যায়।
  • Simple Setup: সাধারণত একটি একক অ্যাকটিভএমকিউ ব্রোকারের মধ্যে কাজ করার কারণে, কনফিগারেশন এবং ব্যবস্থাপনা সহজ।
  • Performance: যেহেতু একক ব্রোকারে কাজ করা হয়, তাই এটি সাধারণত দ্রুত এবং কম খরচে কাজ করে।

Local Transaction কনফিগারেশন

অ্যাকটিভএমকিউ-এ একটি লোকার ট্রানজেকশন ব্যবহার করার জন্য সাধারণত JMS API ব্যবহৃত হয়, যেখানে ট্রানজেকশন শুরু, কমিট এবং রোলব্যাক করা হয়।

import javax.jms.*;

public class LocalTransactionExample {
    public void sendMessage(Session session, MessageProducer producer, String messageText) throws JMSException {
        // Start local transaction
        session.start();
        
        try {
            TextMessage message = session.createTextMessage(messageText);
            producer.send(message);
            
            // Commit transaction
            session.commit();
        } catch (JMSException e) {
            // Rollback in case of failure
            session.rollback();
            throw e;
        }
    }
}

এখানে:

  • session.start() ট্রানজেকশন শুরু করে।
  • session.commit() ট্রানজেকশন সফলভাবে শেষ হওয়ার পর মেসেজ প্রক্রিয়া নিশ্চিত করে।
  • session.rollback() যদি কোনো সমস্যা ঘটে, তবে পুরো ট্রানজেকশনটি বাতিল করে।

Distributed Transactions

Distributed Transactions হলো এমন ট্রানজেকশন যা একাধিক অ্যাকটিভএমকিউ ব্রোকারের মধ্যে মেসেজ প্রক্রিয়া করার জন্য ব্যবহৃত হয়। এটি সাধারণত ডিস্ট্রিবিউটেড সিস্টেমে ব্যবহৃত হয় যেখানে একাধিক ব্রোকার বা সিস্টেমের মধ্যে মেসেজ আদান-প্রদান করা হয়। একাধিক সার্ভিস বা ডাটাবেসে একযোগে ট্রানজেকশন করার সময় সিস্টেমের সমন্বয় এবং কনসিস্টেন্সি রক্ষা করার জন্য ডিস্ট্রিবিউটেড ট্রানজেকশন ব্যবহৃত হয়।

Distributed Transaction-এর বৈশিষ্ট্য

  • Global Atomicity: ডিস্ট্রিবিউটেড ট্রানজেকশনটি একাধিক সিস্টেমে অ্যাটমিকভাবে সম্পন্ন হয়। এটি নিশ্চিত করে যে পুরো সিস্টেমে সব অপারেশন সফল না হলে কোন পরিবর্তনই করা হবে না।
  • XA Transactions: অ্যাকটিভএমকিউ XA ট্রানজেকশন সমর্থন করে, যা JTA (Java Transaction API) ব্যবহার করে ডিস্ট্রিবিউটেড ট্রানজেকশন পরিচালনা করে।
  • Coordinated Commit and Rollback: যদি কোনো একটি অংশে সমস্যা ঘটে, তাহলে সমস্ত অংশ রোলব্যাক (Rollback) হয়ে যাবে। এর ফলে ডিস্ট্রিবিউটেড সিস্টেমে ডেটা কনসিস্টেন্সি রক্ষা করা যায়।
  • Complex Setup: ডিস্ট্রিবিউটেড ট্রানজেকশন কনফিগারেশনের জন্য সাধারণত আরও জটিল সেটআপ এবং পরিবেশের প্রয়োজন হয়।

XA Transactions কনফিগারেশন

অ্যাকটিভএমকিউ XA ট্রানজেকশন ব্যবহারের জন্য, আপনাকে ট্রানজেকশন ম্যানেজার এবং অ্যাকটিভএমকিউ কনফিগারেশন সেট করতে হবে। এখানে JTA এবং XATransactionManager এর মধ্যে যোগাযোগ করা হয়।

<broker xmlns="http://activemq.apache.org/schema/core"
        brokerName="localhost"
        dataDirectory="${activemq.data}">
    
    <persistenceAdapter>
        <kahaDB directory="${activemq.data}/kahadb"/>
    </persistenceAdapter>
    
    <transactionManager>
        <bean class="org.apache.activemq.transaction.XATransactionManager"/>
    </transactionManager>
    
    <transportConnectors>
        <transportConnector uri="tcp://localhost:61616"/>
    </transportConnectors>
</broker>

এখানে:

  • XATransactionManager কনফিগার করা হয়েছে, যা XA ট্রানজেকশন পরিচালনার জন্য ব্যবহৃত হয়।
  • ডিস্ট্রিবিউটেড ট্রানজেকশনে, একাধিক অ্যাকটিভএমকিউ সার্ভারকে একই ট্রানজেকশন ম্যানেজার দ্বারা সমন্বয় করা হয়।

JTA Transaction Example

import javax.jms.*;
import javax.transaction.UserTransaction;

public class DistributedTransactionExample {
    public void sendMessage(Session session, MessageProducer producer, String messageText, UserTransaction userTransaction) throws JMSException {
        try {
            // Begin the distributed transaction
            userTransaction.begin();
            
            TextMessage message = session.createTextMessage(messageText);
            producer.send(message);
            
            // Commit the distributed transaction
            userTransaction.commit();
        } catch (Exception e) {
            // Rollback the transaction in case of failure
            userTransaction.rollback();
            throw e;
        }
    }
}

এখানে:

  • userTransaction.begin() ট্রানজেকশন শুরু করে।
  • userTransaction.commit() পুরো ট্রানজেকশন সফল হলে কমিট করে।
  • userTransaction.rollback() কোনো সমস্যা হলে পুরো ট্রানজেকশন রোলব্যাক করা হয়।

সারাংশ

  • Local Transactions: একক ব্রোকারের মধ্যে মেসেজ প্রক্রিয়া করা হয়। এটি সহজ এবং কম জটিল, এবং একটি অ্যাটমিক ট্রানজেকশন নিশ্চিত করে।
  • Distributed Transactions: একাধিক ব্রোকার বা সিস্টেমের মধ্যে মেসেজ প্রক্রিয়া করা হয়। এটি XA Transactions ব্যবহার করে গ্লোবাল অ্যাটমিকিটি নিশ্চিত করে এবং ডিস্ট্রিবিউটেড সিস্টেমে ডেটা কনসিস্টেন্সি রক্ষা করতে সাহায্য করে।
  • XA Transactions অ্যাকটিভএমকিউ-তে ডিস্ট্রিবিউটেড ট্রানজেকশন পরিচালনা করার জন্য ব্যবহৃত হয় এবং এটি JTA (Java Transaction API) সহ কাজ করে।

এই ট্রানজেকশন মডেলগুলি অ্যাকটিভএমকিউ-এর মধ্যে মেসেজ সিস্টেমের কনসিস্টেন্সি এবং রিলায়েবিলিটি নিশ্চিত করে, বিশেষ করে যখন সিস্টেমটি বৃহত এবং ডিস্ট্রিবিউটেড হয়।

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

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

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

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