menuTicketing

Ticketing Javascript / Typescript لائبریری

GitHub

ریپوزیٹری

JavaScript, TypeScripthome_and_garden
bash
bash
bash

مثال

بنیادی مثال

ایک سرور سے جڑ کر کلید حاصل کرتا ہے اور فوراً واپس کر دیتا ہے۔

ts
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();
}

ہم آہنگی کی مثال (ڈسٹری بیوٹڈ لاک)

متعدد ٹرانزیکشنز اکاؤنٹ کے حساب سے لاک کے ذریعے باہمی اخراج کرتے ہوئے جمع/نکاسی بیک وقت چلائیں تو بھی بیلنس ہمیشہ ابتدائی قدر پر واپس آتا ہے، اس کی تصدیق کرنے والی مثال ہے۔

ts
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 میں ملاحظہ کریں۔