একটি সার্ভারে সংযুক্ত হয়ে একটি কী অর্জন করে সঙ্গে সঙ্গে ফেরত দেওয়া হয়।
const wait = 5000;
const lease = 30000;
const broker = TicketBroker.connect("127.0.0.1:5225");
try {
await broker.waitReady(5000);
const ticket = await broker.acquire("key", wait, lease);
await ticket.release();
console.log("pass");
} finally {
broker.close();
}একাধিক ট্রানজেকশন অ্যাকাউন্ট-ভিত্তিক লক দিয়ে পারস্পরিক বর্জন বজায় রেখে জমা/উত্তোলন একযোগে চালালেও ব্যালেন্স সবসময় শুরুর মানে ফিরে আসে কিনা যাচাই করার উদাহরণ।
async function transaction(broker: TicketBroker, account: number, delta: number): Promise<void> {
const key = `account-${account}`;
let ticket: Ticket;
try {
ticket = await broker.acquire(key, WAIT_MS, LEASE_MS);
} catch (e) {
console.error(`account ${account} acquire failed: ${e}`);
return;
}
const before = balances[account];
await new Promise((resolve) => setImmediate(resolve));
const after = before + delta;
balances[account] = after;
const [action, sign] = delta < 0 ? ["withdraw", "-"] : ["deposit", "+"];
console.info(`account ${account} ${action} ${sign}$${AMOUNT} -> $${after}`);
ticket.close(); // 백그라운드 자동 반납
}সম্পূর্ণ উদাহরণ example.test.ts, bank.test.ts, bench.test.ts-এ দেখুন।