2012-05-08 19 views
7

के साथ मास ट्रांजिट में प्रतिस्पर्धी उपभोक्ता मैंने मैसट्रांसिट के साथ एक साधारण प्रकाशक/उपभोक्ता सेट लागू किया है, और मैं उपभोक्ताओं को एक ही कतार से संदेश पढ़ना चाहता हूं। हालांकि, जब मैं इसे चलाता हूं, तो मुझे खपत के बजाय त्रुटि कतार में भेजे गए संदेशों का एक बड़ा हिस्सा दिखाई देता है। मैंने देखा है कि चर्चाओं से (SO, Forum), यह वास्तव में खरगोश एमक्यू (केवल उसी कतार को इंगित करें) के साथ वास्तव में सरल होना चाहिए, लेकिन यह काम नहीं कर रहा है। क्या कोई अतिरिक्त कॉन्फ़िगरेशन सेट किया जाना चाहिए?खरगोश एमक्यू

यहाँ मेरे प्रकाशक

public class YourMessage { public string Text { get; set; } } 
public class Program 
{ 
    public static void Main() 
    { 
     Console.WriteLine("Publisher"); 
     Bus.Initialize(sbc => 
     { 
      sbc.UseRabbitMqRouting(); 
      sbc.ReceiveFrom("rabbitmq://localhost/test_queue"); 
     }); 
     var x = Console.Read(); 
     for (var i = 0; i <= 1000; i++) 
     { 
      Console.WriteLine("Message Number " + i); 
      Bus.Instance.Publish(new YourMessage { "Message Number " + i }); 
     } 
    } 
} 

और मेरे उपभोक्ता

public class YourMessage { public string Text { get; set; } } 
public class Program 
{ 
    public static void Main() 
    { 
     Console.WriteLine("Consumer"); 
     Bus.Initialize(sbc => 
     { 
      sbc.UseRabbitMqRouting(); 
      sbc.ReceiveFrom("rabbitmq://localhost/test_queue"); 
      sbc.Subscribe(subs => 
      { 
       var del = new Action<IConsumeContext<YourMessage>,YourMessage>((context, msg) => 
       { 
        Console.WriteLine(msg.Text); 
       }); 
       subs.Handler<YourMessage>(del); 
      }); 
     }); 
     while (true) { } 
    } 
} 

उत्तर

5

रिसीवर/उपभोक्ता और प्रकाशक है एक ही पंक्ति पर नहीं हो सकता। यदि आप प्रतिस्पर्धी उपभोक्ताओं को एक ही कतार के खिलाफ चल रहे उपभोक्ता के कई उदाहरण चाहते हैं।

हमारे पास प्रलेखन है, लेकिन इस अनुभाग में वर्तमान में कमी है, इसलिए मैं आपके भ्रम को समझता हूं: http://readthedocs.org/docs/masstransit/en/latest/configuration/gotchas.html#how-to-setup-a-competing-consumer यदि आप सफल होते हैं, तो दस्तावेज़ीकरण में सहायता अद्भुत होगी।

4

तो, ऐसा लगता है कि समाधान की तरह प्रकाशक में लाइन बदलने के लिए था: इस संदेश के लिए प्रतिस्पर्धा कर वे नहीं थे से प्रकाशकों को रोका

sbc.ReceiveFrom("rabbitmq://localhost/test_queue_publisher"); 

:

sbc.ReceiveFrom("rabbitmq://localhost/test_queue"); 

की तरह कुछ करने के लिए उपभोग करने के लिए कॉन्फ़िगर किया गया।

संबंधित मुद्दे