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

ایف ایم زیڈ کی تلاش: لین دین کی حکمت عملی اور ریئل ڈسک مواصلاتی پروٹوکول کی پریکٹس

مصنف:ایجاد کاروں کی مقدار - خواب, تخلیق: 2024-08-06 14:13:40, تازہ کاری: 2024-08-07 15:30:13

[TOC]

img

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

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

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


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

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

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


ایف ایم زیڈ کے احاطہ کردہ مواصلاتی پروٹوکول اور ڈائل فنکشن

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

mqtt / nats / amqp / کافکا

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

مواصلات کی ساخت:

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

ڈائل

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

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

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

img

آئیے اب مل کر ایف ایم زیڈ کے تعاون سے چلنے والے مواصلاتی پروٹوکول کے عملی استعمال کو دریافت کریں۔


ایف ایم زیڈ پلیٹ فارم کے لئے عملی ڈسک مواصلات

mqtt پروٹوکول

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

MQTT پروٹوکول کی اہم خصوصیات: پبلشنگ / سبسکرپشن موڈ

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

خبریں اور سبسکرائب کریں

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

اس سے پہلے کہ ہم آئینہ تعینات کرنے کا حکم چلاتے ہیں، ہمیں پہلے ایک ایجنٹ سرور پروفائل لکھنا ہوگاmosquitto.conf

# 配置端口号及远程访问IP
listener 1883 0.0.0.0
# 设置匿名访问
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("当前实盘robotId:", robotId)

    conn = Dial("mqtt://127.0.0.1:1883?topic=test_topic")
    if (!conn) {
        Log("通信失败!")
        return 
    }

    for (var i = 0; i < 10; i++) {
        // 写入
        var msg = "i: " + i + ", testQueue, robotA, robotId: " + robotId + ", time:" + _D()        
        conn.write(msg)
        Log("向testQueue写入消息:", msg)

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

        Sleep(1000)
    }    
}

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

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

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

Dial کے لئے سٹرنگ کے پیرامیٹرز کے آغاز میںmqtt://یہ پروٹوکول کا نام ہے ، اس کے بعد نگرانی کا پتہ ، بندرگاہ ؛ علامات "؟" کے بعد سبسکرائب / شائع موضوع کا نام ہے ، جہاں ٹیسٹ موضوع کا نام ہے:test_topic

مندرجہ بالا حکمت عملی ایک ہی موضوع پر پوسٹ، سبسکرپشن اور ٹیسٹ کے ساتھ چلتی ہے:

img

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


nats معاہدہ

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

ہر معاہدے کی اپنی خصوصیات ہوتی ہیں اور آپ کو مخصوص دستاویزات اور معلومات مل سکتی ہیں۔

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

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

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

Listening for client connections on 0.0.0.0:4222
Server is ready

nats سرور ٹرم آئینہ چل رہا ہے اور پورٹ 4222 پر نگرانی کرتا ہے۔

مقامی آلات کے درمیان مواصلات

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

  • حکمت عملی A

    var connPub = null 
    var connSub = null
    
    function main() {
        var robotId = _G()
        Log("当前实盘robotId:", robotId)
    
        connPub = Dial("nats://admin@127.0.0.1:4222?topic=pubRobotA")
        if (!connPub) {
            Log("通信失败!")
            return 
        }
    
        connSub = Dial("nats://admin@127.0.0.1:4222?topic=pubRobotB")
        if (!connSub) {
            Log("通信失败!")
            return 
        }
    
        while (true) {
            connPub.write("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("当前实盘robotId:", robotId)
    
        connPub = Dial("nats://admin@127.0.0.1:4222?topic=pubRobotB")
        if (!connPub) {
            Log("通信失败!")
            return 
        }
    
        connSub = Dial("nats://admin@127.0.0.1:4222?topic=pubRobotA")
        if (!connSub) {
            Log("通信失败!")
            return 
        }
    
        while (true) {
            connPub.write("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”)

    Dial فنکشن کے لئے پیرامیٹرز کی تعداد سٹرنگ، شروعnats://اس کا مطلب یہ ہے کہ Nats پروٹوکول کا استعمال کرتے ہوئے مواصلات، اور پھرadminDocker Mirror کی تعیناتی کے وقت سیٹ اپ کی گئی ایک سادہ توثیقی معلوماتauth admin، اس کے بعد سروس ایڈریس اور پورٹ کے بعد "@" کے ساتھ مواد کا وقفہ استعمال کریں127.0.0.1:4222اس کے علاوہ ، ہم نے اپنے صارفین کے لئے ایک نیا صفحہ شائع کیا ہے:topic=pubRobotBنوٹ کریں کہ پہلے والے پتے کے درمیان "کیا؟" علامت کے ساتھ وقفہ لگائیں۔

  • 2، استعمالDial()فنکشن کلائنٹ سے منسلک سرورز کے لئے اشیاء تخلیق کرتا ہےconnSubاس کے علاوہ ، آپ کو اس موضوع پر سبسکرائب کرنے کی ضرورت ہے:

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

    فرق صرف اتنا ہےtopic=pubRobotAاس کی وجہ یہ ہے کہ آپ کو سبسکرائب کرنے کی ضرورت ہے۔pubRobotA

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

  • حکمت عملی A کام کر رہی ہے

    img

  • حکمت عملی B کام کر رہی ہے

    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("当前实盘robotId:", robotId)

    conn = Dial("amqp://q:admin@127.0.0.1:5672/?queue=robotA_Queue")
    if (!conn) {
        Log("通信失败!")
        return 
    }

    for (var i = 0; i < 10; i++) {
        // 读取
        Log("read:", conn.read(1000), "#FF0000")
        
        // 写入
        var msg = "i: " + i + ", testQueue, robotA, robotId: " + robotId + ", time:" + _D()        
        conn.write(msg)
        Log("向testQueue写入消息:", msg)

        Sleep(1000)
    }    
}

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

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

img

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

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


کافکا معاہدہ

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

Kafka اپنے صارفین کو تین اہم خصوصیات پیش کرتا ہے:

  • شائع اور سبسکرائب کریں
  • ریکارڈوں کی تخلیق کے ترتیب کے مطابق ریکارڈوں کے سلسلے کو موثر انداز میں محفوظ کریں
  • ریئل ٹائم پروسیسنگ ریکارڈ اسٹریم

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

خبریں اور سبسکرائب کریں

کافکا ایجنٹ کی جانب سے ڈوکر کی تصویر:

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("当前实盘robotId:", robotId)

    conn = Dial("kafka://localhost:9092/test_topic")
    if (!conn) {
        Log("通信失败!")
        return 
    }

    for (var i = 0; i < 10; i++) {
        // 写入
        var msg = "i: " + i + ", testQueue, robotA, robotId: " + robotId + ", time:" + _D()        
        conn.write(msg)
        Log("向testQueue写入消息:", msg)

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

        Sleep(1000)
    }    
}

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

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

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

اس پروٹوکول کے نام کے ساتھ شروع ہوتا ہے؛ اس کے بعد اس کے ایڈریس پر عمل کریں:localhost:9092اس کے بعد "/" علامت کو وقفے کے طور پر استعمال کریں ، اس کے بعد سبسکرائب / پوسٹ تھیم لکھیں ، جہاں ٹیسٹ تھیم کو اس طرح ترتیب دیا گیا ہے۔test_topic

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

img


مزید