में बैंक हस्तांतरण का मॉडल कैसे करें मैं Accounting Pattern पढ़ रहा हूं और सीक्यूआरएस में इसे लागू करने के बारे में काफी उत्सुक हूं।सीक्यूआरएस
मुझे लगता है कि AccountingTransaction एक समग्र रूट के रूप में यह अपरिवर्तनीय की रक्षा करता है:
कोई पैसा लीक, यह एक खाते से दूसरे में स्थानांतरण किया जाना चाहिए।
public class AccountingTransaction {
private String sequence;
private AccountId from;
private AccountId to;
private MonetaryAmount quantity;
private DateTime whenCharged;
public AccountingTransaction(...) {
raise(new AccountingEntryBookedEvent(sequence, from, quantity.negate(),...);
raise(new AccountingEntryBookedEvent(sequence, to, quantity,...);
}
}
जब AccountingTransaction इसके संग्रह में जोड़ा जाता है। यह कई AccountingEntryBookedEvent प्रकाशित करता है जिसका उपयोग क्वेरी पक्ष पर संबंधित खातों के संतुलन को अद्यतन करने के लिए किया जाता है।
एक समग्र रूट प्रति डीबी लेनदेन, अंतिम स्थिरता, अब तक इतना अच्छा अद्यतन किया गया है।
लेकिन क्या होगा यदि कुछ खाते स्थानांतरण बाधाओं को लागू करते हैं, जैसे वर्तमान शेष राशि को अधिक मात्रा में स्थानांतरित नहीं किया जा सकता है? मैं खाता की शेष राशि प्राप्त करने के लिए क्वेरी पक्ष का उपयोग कर सकता हूं, लेकिन मुझे चिंता है कि क्वेरी पक्ष से डेटा पुराना है।
public class TransferApplication {
public void transfer(...) {
AccountReadModel from = accountQuery.findBy(fromId);
AccountReadModel to = accountQuery.findBy(toId);
if (from.balance() > quantity) {
//create txn
}
}
}
क्या मुझे कमांड पक्ष में खाता मॉडल करना चाहिए? मुझे प्रति डीबी लेनदेन (कम से कम खाते और खाता टीएक्सएन) में कम से कम तीन कुल जड़ें अपडेट करनी होंगी।
public class TransferApplication {
public void transfer(...) {
Account from = accountRepository.findBy(fromId);
Account to = accountRepository.findBy(toId);
Transaction txn = new Transaction(from, to, quantity);
//unit or work locks and updates all three aggregates
}
}
public class AccountingTransaction {
public AccountingTransaction(...) {
if (from.permit(quantity) {
from.debit(quantity);
to.credit(quantity);
raise(new TransactionCreatedEvent(sequence, from, to, quantity,...);
}
}
}
क्या आप डीडीडी का उपयोग कर बैंकप्लिकेशन चाहते हैं? – Developer
@ सिंघ आपकी टिप्पणी के लिए धन्यवाद। हां, सीक्यूआरएस के साथ डीडीडी। – Hippoom
मेरे पास बैंकप्लिकेशन के बारे में एक परियोजना है। क्या आप इसे चाहते हैं? – Developer