وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ایف ایم زیڈ کی تلاش: لائیو ٹریڈنگ کی حکمت عملیوں کے مابین مواصلاتی پروٹوکول کی مشق

مصنف:FMZ~Lydia, تخلیق: 2024-08-08 10:09:21, تازہ کاری: 2024-09-12 09:46:18

img

مالیاتی منڈیوں کی تیز رفتار ترقی اور مقداری تجارت کی مقبولیت کے ساتھ ، زیادہ سے زیادہ تاجروں نے تجارت کے لئے خودکار حکمت عملیوں پر انحصار کرنا شروع کردیا ہے۔ اس عمل میں ، حکمت عملیوں کے مابین مواصلات اور ہم آہنگی خاص طور پر اہم ہے۔ ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم تاجروں کو تجارتی حکمت عملیوں کے مابین موثر مواصلاتی پروٹوکول فراہم کرکے ہموار حکمت عملی ڈاکنگ اور ریئل ٹائم ڈیٹا شیئرنگ کے حصول میں مدد کرتا ہے۔

اس مضمون میں ایف ایم زیڈ پلیٹ فارم میں تجارتی حکمت عملیوں کے براہ راست تجارتی مواصلات پروٹوکول کا جائزہ لیا جائے گا ، عملی ایپلی کیشنز میں اس کے ڈیزائن تصور ، فعال خصوصیات اور فوائد کو متعارف کرایا جائے گا۔ تفصیلی کیس تجزیہ کے ذریعے ، ہم دکھائیں گے کہ کس طرح اس پروٹوکول کو موثر اور مستحکم حکمت عملی مواصلات کے حصول اور تجارتی حکمت عملیوں کی عمل درآمد اور منافع کی کارکردگی کو بہتر بنانے کے لئے استعمال کیا جائے۔

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

طلب کا منظر نامہ

    1. کثیر حکمت عملی تعاون پر مبنی تجارت طلب کا منظرنامہ: ایک پیچیدہ مارکیٹ کے ماحول میں ، ایک ہی حکمت عملی مختلف ہنگامی صورتحال اور مارکیٹ میں ہونے والی تبدیلیوں سے نمٹنے کے قابل نہیں ہوسکتی ہے۔ تاجروں کو ایک ہی وقت میں متعدد حکمت عملیوں کو چلانے کی ضرورت ہوتی ہے ، جیسے رجحان سے باخبر رہنے کی حکمت عملی ، اوسط ردوبدل کی حکمت عملی ، اور ثالثی کی حکمت عملی ، اور ان حکمت عملیوں کو حقیقی وقت میں مارکیٹ کی معلومات اور تجارتی اشاروں کا اشتراک کرنے کے لئے بات چیت کرنے دیں ، اس طرح تجارت کی مجموعی کارکردگی اور استحکام کو بہتر بنانا۔
    1. کراس مارکیٹ آربیٹریج طلب کا منظرنامہ: تاجر مختلف تجارتی منڈیوں کے مابین ثالثی کے لین دین کرنا چاہتے ہیں۔ مثال کے طور پر ، اے شیئر مارکیٹ اور ہانگ کانگ اسٹاک مارکیٹ کے مابین قیمت کے فرق کا استعمال کرتے ہوئے ثالثی۔ جب کسی خاص مارکیٹ میں قیمت کی خرابی واقع ہوتی ہے تو ، حکمت عملی کو ثالثی کے مواقع کو حاصل کرنے کے لئے اسی طرح کے خرید و فروخت کے عمل کو انجام دینے کے لئے دوسری منڈیوں میں حکمت عملیوں کو فوری طور پر مطلع کرنے کی ضرورت ہوتی ہے۔
    1. خطرے کا انتظام اور تحفظ طلب کا منظرنامہ: ایک حکمت عملی مارکیٹ میں اعلی خطرہ ، اعلی منافع والے لین دین کو تلاش کرنے اور ان پر عمل درآمد کرنے کے لئے ذمہ دار ہے ، جبکہ دوسری حکمت عملی مجموعی خطرہ کی نگرانی اور ہیجنگ آپریشنز پر توجہ مرکوز کرتی ہے۔ یہ یقینی بنانے کے لئے کہ اعلی خطرہ والے لین دین کے دوران زیادہ نقصانات نہ ہوں ، ان دونوں حکمت عملیوں کو پوزیشنوں کو بروقت ایڈجسٹ کرنے اور خطرات کو ہیج کرنے کے لئے حقیقی وقت میں ڈیٹا کا تبادلہ کرنے اور ان کا اشتراک کرنے کی ضرورت ہے۔
    1. تقسیم شدہ تجارتی نظام طلب کا منظرنامہ: بڑے تجارتی ادارے تجارتی نظام کی خرابی برداشت اور کارکردگی کو بہتر بنانے کے ل multiple متعدد جسمانی سرورز پر تقسیم شدہ تجارتی نظام چلانے کے خواہاں ہیں۔ ان سرورز پر حکمت عملیوں کو مجموعی طور پر تجارتی نظام کے استحکام اور موثر کام کو یقینی بنانے کے لئے مواصلاتی پروٹوکول کے ذریعہ ڈیٹا کو ہم آہنگ کرنے اور کارروائیوں کو ہم آہنگ کرنے کی ضرورت ہے۔
    1. مارکیٹ مانیٹرنگ اور ابتدائی انتباہ طلب کا منظرنامہ: ایک حکمت عملی مارکیٹ کی حرکیات کی حقیقی وقت کی نگرانی کے لئے ذمہ دار ہے۔ جب مارکیٹ میں بڑی تبدیلیاں آتی ہیں (جیسے قیمتوں میں اچانک گرنے یا اضافے کی طرح) ، حکمت عملی کو خطرات کو کم کرنے یا تجارتی مواقع کو استعمال کرنے کے ل correspond ، متعلقہ ردعمل کے اقدامات جیسے پوزیشنوں کو بند کرنے ، پوزیشنوں کو ایڈجسٹ کرنے یا پوزیشنوں کو شامل کرنے کے ل other دوسری حکمت عملیوں کو فوری طور پر مطلع کرنے کی ضرورت ہوتی ہے۔
    1. پورٹ فولیو کی حکمت عملی کا انتظام طلب کا منظرنامہ: تاجر مختلف اثاثہ جات کی کلاسوں میں سرمایہ کاری کا انتظام کرنے کے لئے حکمت عملیوں کا ایک پورٹ فولیو استعمال کرتے ہیں ، ہر حکمت عملی ایک مخصوص اثاثہ جات کی کلاس (جیسے اسٹاک ، بانڈز ، فیوچر ، وغیرہ) پر مرکوز ہوتی ہے۔ پورٹ فولیو سرمایہ کاری کی مجموعی اصلاح اور زیادہ سے زیادہ منافع حاصل کرنے کے لئے ان حکمت عملیوں کو بات چیت اور ہم آہنگی کی ضرورت ہے۔

یہ طلب کے منظرنامے عملی ایپلی کیشنز میں ایف ایم زیڈ ٹریڈنگ حکمت عملی لائیو ٹریڈنگ مواصلات پروٹوکول کی مختلف امکانات اور فوائد کو ظاہر کرتے ہیں۔ موثر انٹر اسٹریٹیجی مواصلات کے ذریعے ، تاجر پیچیدہ مارکیٹ کے ماحول سے بہتر نمٹ سکتے ہیں ، تجارتی حکمت عملیوں کو بہتر بناسکتے ہیں ، اور تجارتی کارکردگی اور منافع کو بہتر بناسکتے ہیں۔

ایف ایم زیڈ انکیپسولڈ کمیونیکیشن پروٹوکول اور ڈائل فنکشن

لائیو ٹریڈنگ کے مابین مواصلات کی ضروریات کو سمجھنے کے بعد ، ہمیں ان ضروریات کو نافذ کرنے کے طریقوں پر غور کرنے کی ضرورت ہے۔ یہ لائیو ٹریڈنگ اے سے زیادہ کچھ نہیں ہے جو لائیو ٹریڈنگ بی کے ساتھ معلومات کا تبادلہ کرنے کی امید کرتا ہے۔ اگرچہ ضروریات آسان معلوم ہوتی ہیں ، لیکن مواصلات کے پروٹوکول کے ایک سیٹ کا استعمال کرتے وقت مختلف تفصیلات پر اتفاق کرنے کی ضرورت ہے۔ ایف ایم زیڈ نے مواصلات کے کئی مشہور پروٹوکول کو جوڑ دیا ہے۔

mqtt / nats / amqp / کافکا

مواصلات کی فن تعمیر

مواصلات کا فن تعمیر یہ ہے:

  • سرور (پراکسی) صارفین اور پبلشروں کے مابین پیغامات کو ریلے کرنے کے لئے مواصلات کا پروٹوکول چلانے والا سرور درکار ہے۔ یہ سرور ڈوکرز سسٹم پر مقامی طور پر (مقامی براہ راست تجارتی مواصلات کے لئے) یا ریموٹ سروس (کراس سرور براہ راست تجارتی مواصلات کے لئے) کے طور پر تعینات کیا جاسکتا ہے۔
  • کلائنٹ (سبسکرائبر، پبلشر) ایف ایم زیڈ پر حکمت عملی لائیو ٹریڈنگ پروگرام کو مواصلات کے پروٹوکول کے کلائنٹ کے طور پر سمجھا جاسکتا ہے۔ حکمت عملی کا حقیقی وقت کا پروگرام پبلشر (پب) یا سبسکرائبر (سب) ہوسکتا ہے۔

ڈائل فنکشن

ایف ایم زیڈ پلیٹ فارم پر ان پروٹوکولز کو لاگو کرتے وقت یہ آسانی سے سمجھا جاسکتا ہے کہ ایم کیو ٹی ٹی / نیٹس / ایم کیو پی / کافک پروٹوکولز کو فاریکس ٹریڈنگ میں کیا فائدہ ہے؟ میں ضم کیا گیا ہے۔Dial()فنکشن، اورDial()اس فنکشن کا استعمال پیغامات کو شائع کرنے اور سبسکرائب کرنے کے لئے کیا جاتا ہے۔ یہ شائع شدہ پیغامات پروٹوکول سرور کے ذریعہ سبسکرائب شدہ براہ راست تجارت میں پراکسی (ریلے) ہوتے ہیں ، لہذا پہلے ایک پروٹوکول سرور چلانا ضروری ہے۔ مظاہرے کے لئے ، ہم مندرجہ ذیل مثالوں میں مختلف پروٹوکول سرور امیج کی تعیناتی کا استعمال کرتے ہیں۔

API دستاویزات کے سیکشن میں ڈائل فنکشن:https://www.fmz.com/syntax-guide#fun_dial

ڈوکر تصویر کو تعینات کرنے سے پہلے، پہلے ڈوکر سافٹ ویئر انسٹال کرنا یاد رکھیں.

img

اگلا، ہم FMZ کی طرف سے حمایت کی مواصلاتی پروٹوکول ایپلی کیشنز کی تلاش اور مشق کرتے ہیں.

ایف ایم زیڈ پلیٹ فارم لائیو ٹریڈنگ مواصلات پروٹوکول کی مشق

mqtt پروٹوکول

ایم کیو ٹی ٹی (پیغام کی قطار ٹیلی میٹری ٹرانسپورٹ) ایک ہلکا پھلکا پیغام ٹرانسمیشن پروٹوکول ہے جو خاص طور پر کم بینڈوتھ ، اعلی تاخیر یا ناقابل اعتماد نیٹ ورک ماحول کے لئے موزوں ہے۔ یہ اینڈی اسٹینفورڈ کلارک اور آرلن نیپر نے آئی بی ایم کے ذریعہ 1999 میں تجویز کیا تھا اور بعد میں یہ آئی ایس او معیار (ISO / IEC PRF 20922) بن گیا تھا۔

ایم کیو ٹی ٹی پروٹوکول کی اہم خصوصیات: شائع / سبسکرائب موڈ

  • اشاعت: پیغام پروڈیوسر پیغام کو موضوع پر بھیجتا ہے۔
  • سبسکرپشن: ایک پیغام صارف دلچسپی کے موضوع پر سبسکرائب کرتا ہے ، اس طرح اس موضوع پر شائع ہونے والے پیغامات وصول کرتا ہے۔
  • بروکر: ایم کیو ٹی ٹی پیغامات کو آگے بھیجنے کے لئے ایک بیچوان کے طور پر میسج بروکر کا استعمال کرتا ہے ، جس سے پبلشرز اور صارفین کے مابین منقطع ہوجاتا ہے۔

پیغام کی اشاعت اور سبسکرپشن

چونکہ ہم ایم کیو ٹی ٹی پروسیسر کو تعینات کرنے کے لئے ایم کیو ٹی ٹی پروٹوکول کی حمایت کرنے والے سافٹ ویئر کی ڈوکر امیج (ایکلیپس-موسکیٹو امیج) استعمال کرتے ہیں ، لہذا ہم نے پہلے سے ڈوکر انسٹال کیا ہے اور بعد میں تفصیلات میں نہیں جائیں گے۔

تصویر کو تعینات کرنے کے لئے کمانڈ چلانے سے پہلے، ہم ایک پراکسی سرور ترتیب فائل لکھنے کی ضرورت ہےmosquitto.conf.

# Configure port number and remote access IP
listener 1883 0.0.0.0
# Setting up anonymous access
allow_anonymous true

پھر تعیناتی کمانڈ کو چلائیں:

docker run --rm -p 1883:1883 -v ./mosquitto.conf:/mosquitto/config/mosquitto.conf eclipse-mosquitto

پراکسی سرور کی تصویر چلانے کے بعد، مندرجہ ذیل دکھایا جاتا ہے:

1723012640: mosquitto version 2.0.18 starting
1723012640: Config loaded from /mosquitto/config/mosquitto.conf.
1723012640: Opening ipv4 listen socket on port 1883.
1723012640: mosquitto version 2.0.18 running

پھر ہم اس حکمت عملی کو عملی جامہ پہنانے کے لیے آزما سکتے ہیں۔

var conn = null

function main() {
    LogReset(1)
    var robotId = _G()
    Log("Current live trading robotId:", robotId)

    conn = Dial("mqtt://127.0.0.1:1883?topic=test_topic")
    if (!conn) {
        Log("Communication failure!")
        return 
    }

    for (var i = 0; i < 10; i++) {
        // Write
        var msg = "i: " + i + ", testQueue, robotA, robotId: " + robotId + ", time:" + _D()        
        conn.write(msg)
        Log("Write a message to testQueue:", msg)

        // Read
        Log("read:", conn.read(1000), "#FF0000")

        Sleep(1000)
    }    
}

function onexit() {
    conn.close()
    Log("close conn")
}

حکمت عملی کوڈ میں ڈائل فنکشن کا بنیادی استعمال یہ ہے:

Dial("mqtt://127.0.0.1:1883?topic=test_topic")

ڈائل فنکشن کی تار پیرامیٹر کے ساتھ شروع ہوتا ہےmqtt://، جو پروٹوکول کا نام ہے ، اس کے بعد سننے کا پتہ اور بندرگاہ ہے۔ علامت ? کے بعد سبسکرپشن / پبلشنگ ٹاپک کا نام ہے۔ یہاں ٹیسٹ کردہ ٹاپک کا نام یہ ہے:test_topic.

مندرجہ بالا حکمت عملی ایک ہی وقت میں ایک موضوع کو شائع کرتی ہے اور سبسکرائب کرتی ہے۔ چلانے کا ٹیسٹ اس شبیہہ میں دکھایا گیا ہے:

img

ہم ایک دوسرے کو سبسکرائب کرنے اور موضوع کی معلومات شائع کرنے کے لئے دو لائیو ٹریڈنگ کا بھی استعمال کرسکتے ہیں۔ ہم اس طرح کی ایک مثال nats پروٹوکول پریکٹس سیکشن میں استعمال کرتے ہیں ، اور دوسرے پروٹوکول میں اس طریقہ کار کو دہرا نہیں کریں گے۔

نیٹو پروٹوکول

NATS پروٹوکول ایک سادہ ، متن پر مبنی شائع / سبسکرائب اسٹائل پروٹوکول ہے۔ کلائنٹ gnatsd (NATS سرور) سے جڑتا ہے اور gnatsd کے ساتھ بات چیت کرتا ہے۔ مواصلات عام TCP / IP ساکٹ پر مبنی ہے اور کارروائیوں کا ایک بہت ہی چھوٹا سیٹ بیان کرتا ہے۔ نیو لائن اختتام کی نشاندہی کرتا ہے۔ روایتی پیغام مواصلات کے نظام کے برعکس جو بائنری پیغام فارمیٹس کا استعمال کرتے ہیں ، متن پر مبنی NATS پروٹوکول کلائنٹ عمل درآمد کو بہت آسان بنا دیتا ہے اور اسے مختلف پروگرامنگ زبانوں یا اسکرپٹنگ زبانوں میں آسانی سے نافذ کیا جاسکتا ہے۔

ہر پروٹوکول کی اپنی خصوصیات ہوتی ہیں۔ آپ مخصوص دستاویزات اور مواد سے رجوع کر سکتے ہیں ، جن پر یہاں تفصیل سے بات نہیں کی جائے گی۔

NATS پروٹوکول سرور تعینات کریں:

ڈوکر رن نام نیٹس rm -p 4222:4222 -p 8222:8222 نیٹس http_port 8222 auth admin

یہ ڈوکر کمانڈ خود بخود nats امیج کو ڈاؤن لوڈ اور چلائے گی ، اور پورٹ 4222 وہ پورٹ ہے جس تک کلائنٹ کو رسائی حاصل کرنے کی ضرورت ہے۔ تصویر کو تعینات کرنے کے بعد ، پورٹ 8222 پر ایک http مانیٹر بھی کھولا جائے گا۔

Listening for client connections on 0.0.0.0:4222
Server is ready

Nats سرور تصویر چلانے شروع، بندرگاہ 4222 پر سننے،

مقامی آلہ لائیو ٹریڈنگ کی حکمت عملی کے درمیان مواصلات

ہمیں دو حکمت عملیاں (لائیو ٹریڈنگ) بنانے کی ضرورت ہے ، آئیے ان کا نام حکمت عملی اے اور حکمت عملی بی رکھیں۔ ان دونوں حکمت عملیوں کے کوڈز بنیادی طور پر ایک جیسے ہیں۔ وہ جاوا اسکرپٹ میں لکھے گئے ہیں ، جو ایف ایم زیڈ پلیٹ فارم پر استعمال کرنے میں سب سے آسان زبان ہے۔

  • حکمت عملی A
var connPub = null 
var connSub = null

function main() {
    var robotId = _G()
    Log("Current live trading robotId:", robotId)

    connPub = Dial("nats://admin@127.0.0.1:4222?topic=pubRobotA")
    if (!connPub) {
        Log("Communication failure!")
        return 
    }

    connSub = Dial("nats://admin@127.0.0.1:4222?topic=pubRobotB")
    if (!connSub) {
        Log("Communication failure!")
        return 
    }

    while (true) {
        connPub.write("Message posted by robotA, robotId: " + robotId + ", time:" + _D())
        var msgRead = connSub.read(10000)
        if (msgRead) {
            Log("msgRead:", msgRead)
        }

        LogStatus(_D())
        Sleep(10000)
    }
}

function onexit() {
    connPub.close()
    connSub.close()
}
  • حکمت عملی بی
var connPub = null 
var connSub = null

function main() {
    var robotId = _G()
    Log("Current live trading robotId:", robotId)

    connPub = Dial("nats://admin@127.0.0.1:4222?topic=pubRobotB")
    if (!connPub) {
        Log("Communication failure!")
        return 
    }

    connSub = Dial("nats://admin@127.0.0.1:4222?topic=pubRobotA")
    if (!connSub) {
        Log("Communication failure!")
        return 
    }

    while (true) {
        connPub.write("Message posted by robotB, robotId: " + robotId + ", time:" + _D())
        var msgRead = connSub.read(10000)
        if (msgRead) {
            Log("msgRead:", msgRead)
        }

        LogStatus(_D())
        Sleep(10000)
    }
}

function onexit() {
    connPub.close()
    connSub.close()
}

یہ دونوں حکمت عملی تقریبا ایک جیسی ہیں ، سوائے اس کے کہ وہ ایک دوسرے کو شائع اور سبسکرائب کرتے ہیں ، اور سبسکرائب کردہ موضوعات ، شائع شدہ موضوعات ، اور شائع شدہ معلومات مختلف ہیں۔

مثال کے طور پر حکمت عملی بی لیں:

    1. استعمال کریںDial()ایک کلائنٹ کنکشن سرور آبجیکٹ تخلیق کرنے کے لئے تقریبconnPubموضوعی پیغام کی اشاعت کے لئے:

var connPub = ڈائل کریں127.0.0.1:4222?topic=pubRobotB”)

ڈائل فنکشن کی پیرامیٹر سٹرنگ کے ساتھ شروع ہوتا ہےnats://اس بات کا اشارہ کرتے ہوئے کہ NATS پروٹوکول مواصلات کے لئے استعمال کیا جاتا ہے.adminسادہ تصدیق کی معلومات ہےauth adminڈوکر امیج کو تعینات کرتے وقت مقرر کیا جاتا ہے۔ مندرجہ ذیل مواد کو الگ کرنے کے لئے @ کردار کا استعمال کیا جاتا ہے۔ پھر سروس ایڈریس اور پورٹ ہے۔127.0.0.1:4222آخر میں، شائع/سبسکرائب موضوع ہے:topic=pubRobotBنوٹ کریں کہ ? علامت اسے پچھلے ایڈریس سے الگ کرنے کے لئے استعمال کیا جاتا ہے.

    1. استعمال کریںDial()ایک کلائنٹ کنکشن سرور آبجیکٹ تخلیق کرنے کے لئے تقریبconnSubموضوع پیغام کے لیے سبسکرپشن:

var connSub = ڈائل کریں127.0.0.1:4222?topic=pubRobotA”)

فرق صرف اتنا ہےtopic=pubRobotA، کیونکہ ہم موضوع کو سبسکرائب کرنے کی ضرورت ہےpubRobotAجہاں حکمت عملی A معلومات بھیجتی ہے۔

حکمت عملی A میں سبسکرپشن اور پبلشنگ کنکشن اشیاء کی تخلیق اور استعمال وہی ہے جو اوپر بیان کیا گیا ہے۔

  • حکمت عملی اے چلتی ہے

img

  • حکمت عملی بی چلتی ہے

img

اس طرح ، NATS پروٹوکول ایپلی کیشن کی ایک سادہ مثال نافذ کی گئی ہے جس میں براہ راست تجارت A اور براہ راست تجارت B ایک دوسرے کے ساتھ بات چیت کرنے کے لئے پیغامات کو سبسکرائب اور شائع کرتے ہیں۔

amqp پروٹوکول

amqp پروٹوکول قطار

غیر متزلزل مواصلات میں ، پیغام فوری طور پر وصول کنندہ تک نہیں پہنچے گا ، لیکن اسے کنٹینر میں محفوظ کیا جائے گا۔ جب کچھ شرائط پوری ہوجاتی ہیں تو ، پیغام کو کنٹینر کے ذریعہ وصول کنندہ کو بھیجا جائے گا۔ یہ کنٹینر پیغام کی قطار ہے۔ اس فنکشن کو مکمل کرنے کے لئے ، دونوں فریقوں اور کنٹینر اور اس کے اجزاء کو متحد معاہدوں اور قواعد کی تعمیل کرنا ہوگی۔ اے ایم کیو پی ایک ایسا پروٹوکول ہے۔ پیغام بھیجنے والا اور وصول کنندہ دونوں اس پروٹوکول کی تعمیل کرکے غیر متزلزل مواصلات کو نافذ کرسکتے ہیں۔ یہ پروٹوکول پیغام کی شکل اور کام کرنے کا طریقہ طے کرتا ہے۔

ہر پروٹوکول کی اپنی خصوصیات ہوتی ہیں۔ آپ مخصوص دستاویزات اور مواد سے رجوع کر سکتے ہیں ، جن پر یہاں تفصیل سے بات نہیں کی جائے گی۔

amqp پروٹوکول سرور تعینات کریں:

docker run rm hostname my-rabbit name rabbit -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=q -e RABBITMQ_DEFAULT_PASS=admin rabbitmq:3-management

جب ایک ڈوکر تصویر تعینات، یہ ڈاؤن لوڈ کریں گے اور خود کار طریقے سے تعینات، اور جب یہ مکمل ہو جائے گا یہ ظاہر کرے گا:

2024-08-06 09:02:46.248936+00:00 [info] <0.9.0> Time to start RabbitMQ: 15569 ms

سرور تصویر تعینات کیا جاتا ہے کے بعد، ایک ٹیسٹ مثال لکھیں:

var conn = null

function main() {
    LogReset(1)
    var robotId = _G()
    Log("Current live trading robotId:", robotId)

    conn = Dial("amqp://q:admin@127.0.0.1:5672/?queue=robotA_Queue")
    if (!conn) {
        Log("Communication failure!")
        return 
    }

    for (var i = 0; i < 10; i++) {
        // Read
        Log("read:", conn.read(1000), "#FF0000")
        
        // Write
        var msg = "i: " + i + ", testQueue, robotA, robotId: " + robotId + ", time:" + _D()        
        conn.write(msg)
        Log("Write a message to testQueue:", msg)

        Sleep(1000)
    }    
}

function onexit() {
    conn.close()
    Log("close conn")
}

AMQP پروٹوکول کی قطار کا استعمال کرتے وقت ، براہ کرم نوٹ کریں کہ شائع شدہ پیغامات قطار میں برقرار رہیں گے۔ مثال کے طور پر ، اگر ہم مندرجہ بالا مثال کا کوڈ چلاتے ہیں تو ، قطار میں 10 پیغامات لکھے جائیں گے۔ پھر جب ہم اسے دوسری بار چلاتے ہیں تو ، ہم دیکھ سکتے ہیں کہ پڑھنے پر پہلا تحریری پیغام دوبارہ پڑھا جائے گا۔ جیسا کہ شبیہہ میں دکھایا گیا ہے:

img

ہم دیکھ سکتے ہیں کہ اسکرین شاٹ میں سرخ تیروں کی طرف اشارہ کرنے والے دو لاگ پیغامات کے اوقات متضاد ہیں۔ اس کی وجہ یہ ہے کہ سرخ پیغام وہ ہے جو اسٹریٹجی کوڈ کو پہلی بار چلانے پر قطار میں پڑھا اور لکھا گیا تھا۔

اس خصوصیت کی بنیاد پر ، کچھ تقاضوں کو پورا کیا جاسکتا ہے۔ مثال کے طور پر ، حکمت عملی کو دوبارہ شروع کرنے کے بعد ، ریکارڈ شدہ مارکیٹ کے اعداد و شمار کو ابتدائی حساب کتاب اور دیگر کارروائیوں کے لئے قطار سے حاصل کیا جاسکتا ہے۔

کافکا پروٹوکول

اپاچی کافکا ایک تقسیم شدہ ڈیٹا اسٹور ہے جو حقیقی وقت میں اسٹریمنگ ڈیٹا کو کھونے اور اس پر کارروائی کرنے کے لئے موزوں ہے۔ اسٹریمنگ ڈیٹا وہ ڈیٹا ہے جو ہزاروں ڈیٹا ذرائع کے ذریعہ مستقل طور پر تیار کیا جاتا ہے ، اکثر بیک وقت ڈیٹا ریکارڈ بھیجتا ہے۔ اسٹریمنگ پلیٹ فارم کو ڈیٹا کے اس مسلسل بہاؤ کو سنبھالنے کی ضرورت ہوتی ہے ، اس پر ترتیب وار اور اضافی طور پر کارروائی کرتے ہوئے۔

کافکا اپنے صارفین کو تین اہم افعال فراہم کرتا ہے:

  • ریکارڈ کے سلسلے میں اشاعت اور سبسکرپشن
  • مؤثر طریقے سے ریکارڈ کے سلسلے میں ذخیرہ کریں وہ پیدا کیا گیا تھا
  • ریئل ٹائم میں ریکارڈ اسٹریمز کی پروسیسنگ

کافکا بنیادی طور پر ریئل ٹائم اسٹریمنگ ڈیٹا پائپ لائنز اور ایپلی کیشنز بنانے کے لئے استعمال ہوتا ہے جو ڈیٹا اسٹریمز کے مطابق ڈھالتے ہیں۔ یہ میسجنگ ، اسٹوریج ، اور اسٹریم پروسیسنگ کی صلاحیتوں کو یکجا کرتا ہے ، اور تاریخی اور ریئل ٹائم ڈیٹا کو اسٹور کرسکتا ہے۔

پیغام کی اشاعت اور سبسکرپشن

کافکا پراکسی کی ڈوکر تصویر کو تعینات کریں:

docker run --rm --name kafka-server --hostname kafka-server -p 9092:9092 -p 9093:9093 \
        -e KAFKA_CFG_NODE_ID=0 \
        -e KAFKA_CFG_PROCESS_ROLES=controller,broker \
        -e KAFKA_CFG_LISTENERS=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093 \
        -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \
        -e KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT \
        -e KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka-server:9093 \
        -e KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER \
        bitnami/kafka:latest

ٹیسٹ کوڈ کا استعمال کرتے ہوئے ٹیسٹ:

var conn = null

function main() {
    LogReset(1)
    var robotId = _G()
    Log("Current live trading robotId:", robotId)

    conn = Dial("kafka://localhost:9092/test_topic")
    if (!conn) {
        Log("Communication failure!")
        return 
    }

    for (var i = 0; i < 10; i++) {
        // Write
        var msg = "i: " + i + ", testQueue, robotA, robotId: " + robotId + ", time:" + _D()        
        conn.write(msg)
        Log("Write a message to testQueue:", msg)

        // Read
        Log("read:", conn.read(1000), "#FF0000")

        Sleep(1000)
    }    
}

function onexit() {
    conn.close()
    Log("close conn")
}

آئیے ایک نظر ڈالتے ہیں کہ ڈائل فنکشن میں پیغامات شائع کرنے اور سبسکرائب کرنے کے لئے کافکا پروٹوکول کا استعمال کیسے کریں۔

Dial("kafka://localhost:9092/test_topic")

دوسرے پروٹوکول کی طرح ، پہلا حصہ پروٹوکول کا نام ہے۔ پھر اس کے بعد سننے کا پتہ:localhost:9092. پھر علامت / کو علیحدہ کرنے والے کے طور پر استعمال کریں ، اس کے بعد سبسکرپشن / پبلشنگ تھیم۔ یہاں ٹیسٹ تھیم کو ترتیب دیا گیا ہےtest_topic.

ٹیسٹ کے نتائج:

img


مزید