আর্থিক বাজারের দ্রুত বিকাশ এবং পরিমাণগত ট্রেডিংয়ের জনপ্রিয়তার সাথে, আরও বেশি সংখ্যক ব্যবসায়ী ট্রেডিংয়ের জন্য স্বয়ংক্রিয় কৌশলগুলির উপর নির্ভর করতে শুরু করেছে। এই প্রক্রিয়ায়, কৌশলগুলির মধ্যে যোগাযোগ এবং সমন্বয় বিশেষভাবে গুরুত্বপূর্ণ। FMZ (পরিমাণগত ট্রেডিং প্ল্যাটফর্ম) প্রকৃত ট্রেডিং কৌশলগুলির মধ্যে একটি দক্ষ যোগাযোগ প্রোটোকল প্রদান করে ব্যবসায়ীদের কৌশলগুলির নিরবিচ্ছিন্ন ডকিং এবং রিয়েল-টাইম ডেটা শেয়ারিং অর্জনে সহায়তা করে।
এই নিবন্ধটি এফএমজেড প্ল্যাটফর্মে ট্রেডিং কৌশল এবং বাস্তব অর্ডারগুলির মধ্যে যোগাযোগের প্রোটোকলের মধ্যে অনুসন্ধান করবে এবং এর নকশা ধারণা, কার্যকরী বৈশিষ্ট্য এবং ব্যবহারিক অ্যাপ্লিকেশনগুলিতে সুবিধাগুলি উপস্থাপন করবে। বিস্তারিত কেস বিশ্লেষণের মাধ্যমে, আমরা প্রদর্শন করব কিভাবে এই প্রোটোকলটি ব্যবহার করে দক্ষ এবং স্থিতিশীল কৌশল যোগাযোগ অর্জন করতে হয় এবং ট্রেডিং কৌশলগুলির কার্য সম্পাদন এবং রিটার্ন কর্মক্ষমতা উন্নত করতে হয়।
আপনি একজন পরিমাণগত ট্রেডিং উত্সাহী যিনি সবেমাত্র FMZ এর সাথে শুরু করছেন, বা একজন অভিজ্ঞ পেশাদার প্রোগ্রামার, এই নিবন্ধটি আপনাকে মূল্যবান অন্তর্দৃষ্টি এবং ব্যবহারিক অপারেশন গাইড প্রদান করবে। আসুন আমরা একসাথে FMZ এর শক্তিশালী ফাংশনগুলি অন্বেষণ করি এবং বুঝতে পারি কীভাবে কৌশলগুলির মধ্যে সহযোগিতা অর্জন করা যায়, লেনদেনের দক্ষতা উন্নত করা যায় এবং দক্ষ যোগাযোগ প্রোটোকলের মাধ্যমে বাজারের সুযোগগুলি ক্যাপচার করা যায়।
চাহিদার দৃশ্যপট
-
- বহু-কৌশল সহযোগিতামূলক ট্রেডিং
চাহিদার পরিস্থিতি:
একটি জটিল বাজার পরিবেশে, একটি একক কৌশল বিভিন্ন জরুরী অবস্থা এবং বাজার পরিবর্তনের সাথে মানিয়ে নিতে সক্ষম নাও হতে পারে। ট্রেডাররা একই সময়ে একাধিক কৌশল চালাতে চায়, যেমন ট্রেন্ড ফলোয়িং স্ট্র্যাটেজি, মানে রিভার্সন স্ট্র্যাটেজি, এবং আর্বিট্রেজ স্ট্র্যাটেজি, এবং বাজারের তথ্য এবং ট্রেডিং সিগন্যাল শেয়ার করার জন্য এই কৌশলগুলির মধ্যে রিয়েল-টাইম যোগাযোগ আছে, যার ফলে সামগ্রিক ট্রেডিং দক্ষতা এবং স্থিতিশীলতা উন্নত হয়।
- বহু-কৌশল সহযোগিতামূলক ট্রেডিং
-
- ক্রস-মার্কেট সালিশ
চাহিদার পরিস্থিতি:
ব্যবসায়ীরা বিভিন্ন ট্রেডিং মার্কেটের মধ্যে সালিশী লেনদেন করতে চায়। উদাহরণস্বরূপ, সালিশের জন্য A-শেয়ার বাজার এবং হংকং স্টক মার্কেটের মধ্যে মূল্যের পার্থক্য ব্যবহার করুন। যখন একটি নির্দিষ্ট বাজারে দামের অস্বাভাবিকতা দেখা দেয়, তখন কৌশলটিকে সালিসি সুযোগগুলি ক্যাপচার করার জন্য সংশ্লিষ্ট ক্রয়-বিক্রয় ক্রিয়াকলাপগুলি চালানোর জন্য অন্যান্য বাজারের কৌশলগুলিকে অবিলম্বে অবহিত করতে হবে।
- ক্রস-মার্কেট সালিশ
-
- ঝুঁকি ব্যবস্থাপনা এবং হেজিং
চাহিদার পরিস্থিতি:
একটি কৌশল বাজারে উচ্চ-ঝুঁকিপূর্ণ, উচ্চ-পুরস্কারের ট্রেডগুলি খুঁজে বের করার এবং কার্যকর করার জন্য দায়ী, অন্য কৌশলটি সামগ্রিক ঝুঁকি নিরীক্ষণ এবং হেজিং ক্রিয়াকলাপ সম্পাদনের উপর দৃষ্টি নিবদ্ধ করে। উচ্চ-ঝুঁকিপূর্ণ লেনদেনের সময় অত্যধিক ক্ষতি না হয় তা নিশ্চিত করার জন্য, দুটি কৌশলের জন্য রিয়েল-টাইম যোগাযোগ এবং ডেটা ভাগ করে নেওয়ার প্রয়োজন হয় যাতে সময়মতো অবস্থান সামঞ্জস্য করা যায় এবং ঝুঁকিগুলি হেজ করা যায়।
- ঝুঁকি ব্যবস্থাপনা এবং হেজিং
-
- বিতরণ করা ট্রেডিং সিস্টেম
চাহিদার পরিস্থিতি:
বড় ট্রেডিং প্রতিষ্ঠানগুলি ট্রেডিং সিস্টেমের ত্রুটি সহনশীলতা এবং কার্যকারিতা উন্নত করতে একাধিক শারীরিক সার্ভারে বিতরণ করা ট্রেডিং সিস্টেম চালানোর আশা করে। সামগ্রিক ট্রেডিং সিস্টেমের স্থিতিশীলতা এবং দক্ষ অপারেশন নিশ্চিত করার জন্য এই সার্ভারগুলির কৌশলগুলির জন্য যোগাযোগ প্রোটোকলের মাধ্যমে ডেটা সিঙ্ক্রোনাইজেশন এবং সমন্বয় ক্রিয়াকলাপ প্রয়োজন।
- বিতরণ করা ট্রেডিং সিস্টেম
-
- বাজার পর্যবেক্ষণ এবং আগাম সতর্কতা
চাহিদার পরিস্থিতি:
একটি নির্দিষ্ট কৌশল রিয়েল টাইমে বাজারের গতিশীলতা পর্যবেক্ষণের জন্য দায়ী যখন বাজারে বড় পরিবর্তন হয় (যেমন হঠাৎ মূল্য হ্রাস বা বৃদ্ধি), কৌশলটি দ্রুত অন্যান্য কৌশলগুলিকে অনুরূপ প্রতিক্রিয়া ক্রিয়াকলাপগুলি যেমন ক্লোজিং পজিশনগুলিকে অবহিত করতে হবে। , পজিশন সামঞ্জস্য করা, বা ঝুঁকি কমাতে পজিশন যোগ করা বা ট্রেডিং সুযোগ বাজেয়াপ্ত করা।
- বাজার পর্যবেক্ষণ এবং আগাম সতর্কতা
-
- পোর্টফোলিও কৌশল ব্যবস্থাপনা
চাহিদার পরিস্থিতি:
ব্যবসায়ীরা বিভিন্ন সম্পদ শ্রেণিতে বিনিয়োগ পরিচালনা করতে কৌশলগুলির একটি পোর্টফোলিও ব্যবহার করে, প্রতিটি কৌশল একটি নির্দিষ্ট সম্পদ শ্রেণির (যেমন স্টক, বন্ড, ফিউচার ইত্যাদি) উপর ফোকাস করে। এই কৌশলগুলির জন্য পোর্টফোলিও বিনিয়োগের সামগ্রিক অপ্টিমাইজেশান অর্জন করতে এবং সর্বাধিক রিটার্ন অর্জনের জন্য যোগাযোগ এবং সমন্বয় প্রয়োজন।
- পোর্টফোলিও কৌশল ব্যবস্থাপনা
এই চাহিদার পরিস্থিতিগুলি বাস্তব অ্যাপ্লিকেশনগুলিতে FMZ ট্রেডিং কৌশল আন্তঃ-রিয়েল-টাইম যোগাযোগ প্রোটোকলের একাধিক সম্ভাবনা এবং সুবিধাগুলি প্রদর্শন করে। কার্যকর আন্তঃকৌশল যোগাযোগের মাধ্যমে, ব্যবসায়ীরা জটিল বাজার পরিবেশের সাথে আরও ভালভাবে মোকাবিলা করতে পারে, ট্রেডিং কৌশলগুলিকে অপ্টিমাইজ করতে পারে এবং ট্রেডিং দক্ষতা এবং লাভ উন্নত করতে পারে।
FMZ প্যাকেজের যোগাযোগ প্রোটোকল এবং ডায়াল ফাংশন
বাস্তব ডিস্কের মধ্যে যোগাযোগের প্রয়োজনীয়তা বোঝার পরে, এই প্রয়োজনীয়তাগুলি কীভাবে বাস্তবায়ন করা যায় তা বিবেচনা করার সময় এসেছে। এটি বাস্তব অফার ছাড়া আর কিছুই নয় A বাস্তব অফার B এর সাথে তথ্য বিনিময় করার আশা করছে, যদিও প্রয়োজনটি খুব সহজ বলে মনে হচ্ছে। যাইহোক, এফএমজেড বেশ কয়েকটি জনপ্রিয় যোগাযোগ প্রোটোকলের একটি সেট ব্যবহার করার বিষয়ে একমত হওয়া প্রয়োজন।
mqtt / nats / amqp / kafka
যোগাযোগ স্থাপত্য
যোগাযোগের স্থাপত্য হল:
- সার্ভার (প্রক্সি)।
গ্রাহক এবং প্রকাশকদের মধ্যে পাস করা বার্তাগুলি রিলে করার জন্য একটি যোগাযোগ প্রোটোকলের একটি সার্ভার চালানো প্রয়োজন৷ এই সার্ভারটি হোস্টের সিস্টেমে স্থানীয়ভাবে স্থাপন করা যেতে পারে (স্থানীয় রিয়েল ডিস্কের মধ্যে যোগাযোগের জন্য) এটি একটি দূরবর্তী পরিষেবাও হতে পারে (সার্ভার জুড়ে বাস্তব ডিস্কগুলির মধ্যে যোগাযোগের জন্য)। - ক্লায়েন্ট (গ্রাহক, প্রকাশক)।
FMZ-এ নীতি বাস্তবায়নের প্রোগ্রামটি একটি কমিউনিকেশন প্রোটোকলের ক্লায়েন্ট হিসাবে বোঝা যেতে পারে নীতি বাস্তবায়ন একজন প্রকাশক (পাব) বা গ্রাহক (সাব) হতে পারে।
ডায়াল ফাংশন
FMZ প্ল্যাটফর্মে এই প্রোটোকলগুলি প্রয়োগ করার সময়, এটিকে সহজভাবে বোঝা যায় mqtt/nats/amqp/kafka হিসাবেDial()ফাংশনে, ব্যবহার করুনDial()ফাংশনগুলি বার্তা প্রকাশ এবং সদস্যতার মতো ক্রিয়াকলাপগুলি সম্পাদন করে। এই প্রকাশিত বার্তাগুলি প্রোটোকলের সার্ভারের মাধ্যমে সাবস্ক্রাইব করা ক্লায়েন্টদের কাছে প্রক্সিড (রিলেড) হয়, তাই প্রথমে প্রোটোকলের একটি সার্ভার চালাতে হবে। প্রদর্শনের সুবিধার জন্য, নিম্নলিখিত উদাহরণগুলিতে আমরা বিভিন্ন প্রোটোকল সার্ভার ইমেজ স্থাপনা ব্যবহার করি।
API ডকুমেন্টেশন অধ্যায় যেখানে ডায়াল ফাংশন অবস্থিত: https://www.fmz.com/syntax-guide#fun_dial
ডকার ইমেজ স্থাপন করার আগে, প্রথমে ডকার সফ্টওয়্যার ইনস্টল করতে মনে রাখবেন।
এরপর, আসুন আমরা FMZ দ্বারা সমর্থিত যোগাযোগ প্রোটোকল অ্যাপ্লিকেশনগুলি অন্বেষণ এবং অনুশীলন করি।
FMZ প্ল্যাটফর্মে রিয়েল-টাইম যোগাযোগ প্রোটোকল অনুশীলন
mqtt প্রোটোকল
MQTT (মেসেজ কিউইং টেলিমেট্রি ট্রান্সপোর্ট) হল একটি লাইটওয়েট মেসেজ ট্রান্সমিশন প্রোটোকল, বিশেষত কম-ব্যান্ডউইথ, উচ্চ-লেটেন্সি বা অবিশ্বস্ত নেটওয়ার্ক পরিবেশের জন্য উপযুক্ত। এটি 1999 সালে আইবিএম-এর অ্যান্ডি স্ট্যানফোর্ড-ক্লার্ক এবং আর্লেন নিপার দ্বারা প্রস্তাবিত হয়েছিল এবং পরে এটি একটি ISO স্ট্যান্ডার্ড (ISO/IEC PRF 20922) হয়ে ওঠে।
MQTT প্রোটোকলের প্রধান বৈশিষ্ট্য: প্রকাশ/সাবস্ক্রাইব মডেল
- প্রকাশনা: বার্তা প্রযোজক বিষয়টিতে বার্তা পাঠান।
- সদস্যতা: একটি বার্তা ভোক্তা সেই বিষয়ে প্রকাশিত বার্তাগুলি পেতে আগ্রহের বিষয়ের সদস্যতা নেয়।
- মধ্যস্থতা: MQTT প্রকাশক এবং গ্রাহকদের মধ্যে ডিকপলিং নিশ্চিত করার জন্য বার্তাগুলি ফরোয়ার্ড করার জন্য একটি মধ্যস্থতাকারী হিসাবে একটি বার্তা ব্রোকার (ব্রোকার) ব্যবহার করে।
বার্তা প্রকাশ এবং সদস্যতা
যেহেতু আমরা এমকিউটিটি প্রক্সি সার্ভার স্থাপনের জন্য এমকিউটিটি প্রোটোকল সমর্থন করে এমন সফ্টওয়্যারটির ডকার ইমেজ (ইক্লিপস-মস্কিটো ইমেজ) ব্যবহার করি, তাই আমাদের আগে থেকে ডকার ইনস্টল করতে হবে এবং পরে বিস্তারিত জানা যাবে না।
ইমেজ স্থাপন করার কমান্ড চালানোর আগে, আমাদের একটি প্রক্সি সার্ভার কনফিগারেশন ফাইল লিখতে হবে।mosquitto.conf。
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
তারপরে আমরা কৌশলটি পরীক্ষা করতে পারি এবং এটি অনুশীলন করতে পারি।
javascript
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")
}
কৌশল কোডে ডায়াল ফাংশনের প্রধান ব্যবহার হল:
javascript
Dial("mqtt://127.0.0.1:1883?topic=test_topic")
ডায়াল ফাংশনের স্ট্রিং প্যারামিটার দিয়ে শুরু হয়mqtt://প্রোটোকলের নাম, শোনার ঠিকানা এবং পোর্ট অনুসরণ করে। "?" চিহ্নটি সাবস্ক্রিপশন/প্রকাশনার বিষয়ের নামটি এখানে পরীক্ষা করা হয়েছে:test_topic。
উপরের কৌশলটি একই সময়ে একটি বিষয় প্রকাশ করে এবং সাবস্ক্রাইব করে চলমান পরীক্ষাটি চিত্রে দেখানো হয়েছে:
আপনি একে অপরের সদস্যতা এবং বিষয় তথ্য প্রকাশ করতে দুটি বাস্তব ডিস্ক ব্যবহার করতে পারেন আমরা এই উদাহরণটি ন্যাট প্রোটোকল অনুশীলন অধ্যায়ে ব্যবহার করি এবং অন্যান্য প্রোটোকলগুলিতে এই পদ্ধতিটি পুনরাবৃত্তি করব না।
nats প্রোটোকল
NATS প্রোটোকল হল একটি সহজ, পাঠ্য-ভিত্তিক প্রকাশ/সাবস্ক্রাইব স্টাইল প্রোটোকল। ক্লায়েন্ট gnatsd (NATS সার্ভার) এর সাথে যোগাযোগ করে এবং যোগাযোগটি সাধারণ TCP/IP সকেটের উপর ভিত্তি করে এবং নিউলাইন পরিসমাপ্তি নির্দেশ করে। বাইনারি বার্তা ফর্ম্যাট ব্যবহার করে এমন ঐতিহ্যবাহী বার্তা যোগাযোগ ব্যবস্থা থেকে ভিন্ন, পাঠ্য-ভিত্তিক NATS প্রোটোকল ব্যবহার করা হয়, যা ক্লায়েন্ট বাস্তবায়নকে খুব সহজ করে তোলে এবং একাধিক প্রোগ্রামিং ভাষা বা স্ক্রিপ্টিং ভাষায় সহজেই প্রয়োগ করা যেতে পারে।
প্রতিটি প্রোটোকলের নিজস্ব বৈশিষ্ট্য রয়েছে আপনি নির্দিষ্ট নথি এবং তথ্য এখানে দেখতে পাবেন না।
ন্যাট প্রোটোকল সার্ভার স্থাপন করুন:
docker run --name nats --rm -p 4222:4222 -p 8222:8222 nats --http_port 8222 --auth admin
এই ডকার কমান্ডটি স্বয়ংক্রিয়ভাবে ন্যাট ইমেজ ডাউনলোড এবং চালাবে এবং পোর্ট 4222 হল সেই পোর্ট যা ক্লায়েন্ট অ্যাক্সেস করতে চায়। চিত্রটি স্থাপন করার পরে, পোর্ট 8222-এ একটি http মনিটরও খোলা থাকবে।
终端
Listening for client connections on 0.0.0.0:4222
Server is ready
ন্যাট সার্ভার ইমেজ 4222 পোর্টে শোনার শুরু হয়।
স্থানীয় ডিভাইস বাস্তব ডিস্ক নীতির মধ্যে যোগাযোগ
আমাদের দুটি কৌশল (বাস্তব বাজার) তৈরি করতে হবে এখনকার জন্য কৌশল A এবং কৌশল B এই দুটি কৌশলের কোডগুলি মূলত একই। FMZ প্ল্যাটফর্মে সবচেয়ে অ্যাক্সেসযোগ্য জাভাস্ক্রিপ্ট ভাষা ব্যবহার করে লেখা।
-
কৌশল এ
javascriptvar connPub = null var connSub = null function main() { var robotId = _G() Log("当前实盘robotId:", robotId) connPub = Dial("nats://[email protected]:4222?topic=pubRobotA") if (!connPub) { Log("通信失败!") return } connSub = Dial("nats://[email protected]: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() } -
কৌশল বি
javascriptvar connPub = null var connSub = null function main() { var robotId = _G() Log("当前实盘robotId:", robotId) connPub = Dial("nats://[email protected]:4222?topic=pubRobotB") if (!connPub) { Log("通信失败!") return } connSub = Dial("nats://[email protected]: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() }
এই দুটি কৌশল মূলত একই, তারা প্রকাশ এবং একে অপরের সদস্যতা, বিষয়ের সদস্যতা, বিষয় প্রকাশ, এবং তথ্য প্রকাশ করা ছাড়া।
একটি উদাহরণ হিসাবে B কৌশল নিন:
-
- ব্যবহার করুন
Dial()ফাংশন ক্লায়েন্ট সংযোগ সার্ভার অবজেক্ট তৈরি করেconnPub, বিষয় বার্তা প্রকাশের জন্য ব্যবহৃত:
var connPub = Dial("nats://[email protected]:4222?topic=pubRobotB")
ডায়াল ফাংশনের প্যারামিটার স্ট্রিংটি শুরু হয়
nats://নির্দেশ করে যে nats প্রোটোকল যোগাযোগ ব্যবহার করা হয়, এবং তারপরadminডকার ইমেজ স্থাপন করার সময় এটি একটি সহজ যাচাইকরণ তথ্য সেট।auth admin, নিম্নলিখিত বিষয়বস্তু আলাদা করতে "@" অক্ষর ব্যবহার করুন, এবং তারপর পরিষেবা ঠিকানা এবং পোর্ট127.0.0.1:4222, এবং অবশেষে প্রকাশ/সাবস্ক্রাইব বিষয়:topic=pubRobotBমনে রাখবেন এটি একটি "?" দ্বারা পূর্ববর্তী ঠিকানা থেকে পৃথক করা হয়েছে। - ব্যবহার করুন
-
- ব্যবহার করুন
Dial()ফাংশন ক্লায়েন্ট সংযোগ সার্ভার অবজেক্ট তৈরি করেconnSub, বিষয় বার্তা সদস্যতা জন্য ব্যবহৃত:
var connSub = Dial("nats://[email protected]:4222?topic=pubRobotA")
পার্থক্য একটাই
topic=pubRobotAভিন্ন কারণ আপনাকে নীতি A দ্বারা পাঠানো তথ্যের বিষয়ে সদস্যতা নিতে হবেpubRobotA。 - ব্যবহার করুন
কৌশল A-তে সাবস্ক্রিপশন এবং প্রকাশনা সংযোগ বস্তু তৈরি এবং ব্যবহার উপরে বর্ণিত হিসাবে একই।
এইভাবে, একটি সাধারণ ন্যাট প্রোটোকল অ্যাপ্লিকেশন উদাহরণ বাস্তবায়িত হয় যেখানে বাস্তব অফার A এবং বাস্তব অফার B একে অপরের সাথে সাবস্ক্রাইব করে এবং যোগাযোগের জন্য বার্তা প্রকাশ করে।
amqp প্রোটোকল
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
সার্ভার ইমেজ স্থাপন করার পরে, একটি পরীক্ষা উদাহরণ পরীক্ষা লিখুন:
javascript
var conn = null
function main() {
LogReset(1)
var robotId = _G()
Log("当前实盘robotId:", robotId)
conn = Dial("amqp://q:[email protected]: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 প্রোটোকল কিউ ব্যবহার করার সময়, অনুগ্রহ করে মনে রাখবেন যে প্রকাশিত বার্তাগুলি কিউতে থাকবে। উদাহরণস্বরূপ, উপরের উদাহরণ কোডটি একবার রান করা যাক। সারিতে ১০টি বার্তা লেখা হবে। তারপর যখন আমরা এটি দ্বিতীয়বার চালাই, তখন আমরা দেখতে পাই যে পড়ার সময়, প্রথমবার লেখা তথ্য আবার পড়া হবে। চিত্রে দেখানো হয়েছে:
আপনি দেখতে পাচ্ছেন যে স্ক্রিনশটে লাল তীর দ্বারা নির্দেশিত দুটি লগ মেসেজ সময়ের সাথে সামঞ্জস্যপূর্ণ নয় কারণ হল যে পলিসি কোডটি প্রথমবার চালানো হলে লাল বার্তাটি সারিতে লেখা হয়৷
এই বৈশিষ্ট্যের উপর ভিত্তি করে, কিছু প্রয়োজনীয়তা উপলব্ধি করা যেতে পারে, উদাহরণস্বরূপ, কৌশলটি পুনরায় চালু করার পরে, রেকর্ড করা বাজারের ডেটা এখনও শুরুর গণনা এবং অন্যান্য ক্রিয়াকলাপের জন্য প্রাপ্ত করা যেতে পারে।
কাফকা প্রোটোকল
অ্যাপাচি কাফকা হল একটি বিতরণকৃত ডেটা স্টোর যা রিয়েল টাইমে স্ট্রিমিং ডেটা গ্রহণ এবং প্রক্রিয়াকরণের জন্য অপ্টিমাইজ করা হয়েছে। স্ট্রিমিং ডেটা বলতে এমন ডেটা বোঝায় যা হাজার হাজার ডেটা উৎস দ্বারা ক্রমাগত তৈরি হয়, প্রায়শই একই সাথে ডেটা রেকর্ড প্রেরণ করে। স্ট্রিমিং প্ল্যাটফর্মটিকে এই ধারাবাহিকভাবে প্রবাহিত ডেটা প্রক্রিয়া করতে হবে এবং ধাপে ধাপে ক্রমানুসারে এটি প্রক্রিয়া করতে হবে।
কাফকা তার ব্যবহারকারীদের তিনটি প্রধান ক্ষমতা প্রদান করে:
- প্রকাশ করুন এবং রেকর্ড স্ট্রীম সদস্যতা
- রেকর্ডের একটি ধারা দক্ষতার সাথে সেগুলি যে ক্রমে তৈরি করা হয়েছিল সেভাবে সংরক্ষণ করুন।
- রিয়েল টাইমে রেকর্ড স্ট্রীম প্রক্রিয়া করুন
কাফকা প্রাথমিকভাবে রিয়েল-টাইম স্ট্রিমিং ডেটা পাইপলাইন এবং ডেটা প্রবাহের সাথে খাপ খাইয়ে নেওয়া অ্যাপ্লিকেশন তৈরির জন্য ব্যবহৃত হয়। এটি ঐতিহাসিক এবং রিয়েল-টাইম ডেটা সঞ্চয় করতে মেসেজিং, স্টোরেজ এবং স্ট্রিম প্রসেসিং ক্ষমতাকে একত্রিত করে।
বার্তা প্রকাশ এবং সদস্যতা
কাফকা প্রক্সির ডকার ইমেজ স্থাপন করুন:
终端
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
টেস্ট কোড ব্যবহার করে পরীক্ষা করুন:
javascript
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")
}
আসুন বার্তাগুলি প্রকাশ এবং সদস্যতা নিতে ডায়াল ফাংশনে কাফকা প্রোটোকলটি কীভাবে ব্যবহার করবেন তা দেখে নেওয়া যাক।
javascript
Dial("kafka://localhost:9092/test_topic")
অন্যান্য প্রোটোকলের মতো, শুরুটি হল প্রোটোকলের নাম। তারপর শোনার ঠিকানা অনুসরণ করুন:localhost:9092. তারপর ব্যবধান হিসাবে "/" চিহ্নটি ব্যবহার করুন এবং তারপরে সাবস্ক্রিপশন/প্রকাশনার বিষয় লিখুনtest_topic。
পরীক্ষার ফলাফল:
- 1







