मैं समझने की कोशिश कर रहा हूं कि Disruptor.NET मैसेजिंग फ्रेमवर्क का उपयोग कैसे करें, और मुझे कोई व्यावहारिक उदाहरण नहीं मिल रहा है। चित्रों के साथ वहां कुछ लेख हैं जो यह काम करता है, लेकिन मुझे वास्तव में कहीं भी नहीं मिल रहा है और आपको दिखाता है कि विधियों को कैसे कार्यान्वित किया जाए। एक उदाहरण क्या होगा?Disruptor.NET उदाहरण
उत्तर
निराश है कि मुझे विघटनकारी-नेट के लिए एक काम करने योग्य 'हैलो वर्ल्ड' नहीं मिल सका, मैं एक काम करने तक चारों ओर झुका हुआ - नीचे देखें। उम्मीद है कि यह काफी आत्म-व्याख्यात्मक है। Console.WriteLine
लाइनें यह देखने के लिए आसान हैं कि चीजें कैसे काम करती हैं - उदाहरण के लिए, कि रिंगबफर स्टार्ट-अप (जो समझ में आता है) पर प्रत्येक प्रविष्टि उदाहरण बनाता है।
आशा है कि यह किसी को भी .NET पर विघटनकर्ता के साथ मदद की तलाश में मदद करेगा।
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Disruptor;
using Disruptor.Dsl;
namespace DisruptorTest
{
public sealed class ValueEntry
{
public long Value { get; set; }
public ValueEntry()
{
Console.WriteLine("New ValueEntry created");
}
}
public class ValueAdditionHandler : IEventHandler<ValueEntry>
{
public void OnNext(ValueEntry data, long sequence, bool endOfBatch)
{
Console.WriteLine("Event handled: Value = {0} (processed event {1}", data.Value, sequence);
}
}
class Program
{
private static readonly Random _random = new Random();
private static readonly int _ringSize = 16; // Must be multiple of 2
static void Main(string[] args)
{
var disruptor = new Disruptor.Dsl.Disruptor<ValueEntry>(() => new ValueEntry(), _ringSize, TaskScheduler.Default);
disruptor.HandleEventsWith(new ValueAdditionHandler());
var ringBuffer = disruptor.Start();
while (true)
{
long sequenceNo = ringBuffer.Next();
ValueEntry entry = ringBuffer[sequenceNo];
entry.Value = _random.Next();
ringBuffer.Publish(sequenceNo);
Console.WriteLine("Published entry {0}, value {1}", sequenceNo, entry.Value);
Thread.Sleep(250);
}
}
}
}
क्या आप यह भी नोट कर सकते हैं कि इसे कैसे चलाया जाए? मुझे एक परियोजना में क्या डीएल जोड़ना चाहिए? क्या मुझे उन्हें कहीं डाउनलोड करना चाहिए या मुझे खुद को बनाना चाहिए? – javapowered
कोई भी उदाहरण का स्पष्टीकरण कर सकता है? यह मानक .net पुस्तकालयों से बेहतर क्यों है? कितने धागे शामिल हैं? सिर्फ एक? मुझे कोई थ्रेड सृजन नहीं दिख रहा है। – javapowered
विघटन पैटर्न का उपयोग करने वाले अधिकांश लोग तीन चरण पाइपलाइन का उपयोग करेंगे, इसलिए यह एक इनपुट विघटनकर्ता और आउटपुट विघटनकर्ता के साथ एक उदाहरण के साथ अच्छा होगा। – Fred
वहाँ Disruptor पैटर्न पर एक विस्तृत ब्लॉग पोस्ट है, The Latency Issue। यह दर्शाता है कि कैसे शुरू किया जाए और विघटनकर्ता को विस्तार से उपयोग करें।
के एकाधिक नहीं। यह लिंक पुराना है। नया लिंक http://www.tradesharp.se/over-6-million-transactions-per-second-in-a-real-time-system-an-out-of-the-box-approach/ –
नया लिंक है भी बेवकूफ है। – Ozgur
यह प्रश्न आपको कुछ ऐसी जानकारी तक ले जा सकता है जो आपने अभी तक नहीं देखा है: http://stackoverflow.com/questions/6933347/how-should-one-use-disruptor-disruptor-pattern-to-build-real- विश्व संदेश-sys –
[आधिकारिक परियोजना विकी] (http://code.google.com/p/disruptor-net/w/list) में कुछ जानकारी है। – caesay
उनके बारे में एक कोड उदाहरण पुराना प्रतीत होता है - उदाहरण के लिए, मुझे वर्तमान निर्माण में कहीं भी इंटरफ़ेस "आईबैचहैंडलर" नहीं मिल रहा है और रिंगबफर के पैरामीटर पूरी तरह से अलग-अलग पैरामीटर हैं। ऐसा लगता है कि आधिकारिक साइट गिटहब में चली गई है लेकिन मुझे साइट पर कोई अतिरिक्त उदाहरण/दस्तावेज नहीं मिल रहे हैं (लेकिन मुझे यकीन नहीं है कि मैं इसे सही तरीके से कर रहा हूं) - https://github.com/odeheurles/ विघटनकर्ता-नेट # रीडेम – William