मैं विभिन्न हार्डवेयर प्रकारों से स्थिति की जानकारी प्राप्त करने के समर्थन के लिए एक प्रणाली विकसित कर रहा हूं। हार्डवेयर का प्रत्येक टुकड़ा एक ही स्थिति की जानकारी (अक्षांश, रेखांश) की रिपोर्ट कर रहा है, लेकिन प्रत्येक हार्डवेयर प्रकार इस जानकारी की रिपोर्ट करने के लिए एक अद्वितीय प्रोटोकॉल का उपयोग करता है। इस कारण से मेरे पास कई डिवाइस हैं, प्रत्येक डिवाइस प्रकार के लिए एक, जो उस डिवाइस के प्रोटोकॉल को सुनता है और पार्स करता है। मैं एक आम संदेश का उपयोग कर स्थिति की जानकारी प्रकाशित करने के लिए इन सेवाओं में से प्रत्येक के लिए करना चाहते हैं:क्या एक NServiceBus एंडपॉइंट एक ही संदेश के कई प्रकाशकों की सदस्यता ले सकता है?
public interface IPositionMessage : IMessage
{
string UnitName { get; set; }
double Latitude { get; set; }
double Longitude { get; set; }
}
मैं कोई परेशानी नहीं मेरी पहली सेवा की स्थापना की थी, लेकिन अब है कि मैं अपने दूसरी सेवा मुझे लगता है कि खोजने कर रहा हूँ की स्थापना कर रहा हूँ मेरे ग्राहक एकाधिक प्रकाशकों से एक ही संदेश की सदस्यता लेने में असमर्थ हैं।
इसी तरह के question on the NServiceBus yahoo group में, अनुशंसित समाधान आम संदेश को कमांड में परिवर्तित करना और Bus.Publish के बजाय Bus.Send का उपयोग करना है। मुझे नहीं लगता कि इस परिदृश्य में वास्तव में क्या हो रहा है, यह एक घटना है (इकाई पहले से ही एक स्थिति में पहुंच चुकी है और नई स्थिति की रिपोर्ट कर रही है)। अगर मैं इसे कमांड में परिवर्तित करना चाहता हूं तो मुझे इस घटना के सभी संभावित ग्राहकों को पहले से ही जानना होगा, जो मैं नहीं करता हूं। एक और संभावित समाधान एकत्रीकरण/पुन: प्रकाशक बनाना होगा कि प्रत्येक सेवा बस होगी। आगे बढ़ें, और फिर संदेश को एक प्रकाशक से पुन: प्रकाशित किया जाएगा। यह एक अनावश्यक बाधा की तरह लगता है।
वहाँ ग्राहकों के लिए कई प्रकाशकों से एक ही संदेश की सदस्यता के लिए के लिए अनुमति देने के लिए कोई भी तरीका है?
AFAIK, एक से अधिक भौतिक प्रकाशक से प्रकाशित करना बुरा व्यवहार है। –
मेरे विचार में, प्रत्येक सेवा एक भौतिक नोड एक लॉजिकल प्रकाशक के हिस्से के रूप में भाग लेती है। यदि मेरा एक सेवा कार्यान्वयन था तो मेरा परिदृश्य अलग नहीं होगा और मुझे दूसरी मशीन पर इसे स्थापित करने के लिए स्केल करने की आवश्यकता है। – JadeMason