के साथ एक खुली रेडिस पबसब सदस्यता को बनाए रखना मैं कार्यकर्ता प्रक्रियाओं के पूल से संदेशों को अपने एएसपी.NET एप्लिकेशन में संदेश भेजने के लिए रेडिस पबब चैनल का उपयोग कर रहा हूं। जब कोई संदेश प्राप्त होता है, तो मेरा एप्लिकेशन क्लाइंट के ब्राउज़र को सिग्नलआर के साथ संदेश भेजता है।बुक्सलीव
मुझे रेडिस के साथ एक खुले कनेक्शन को बनाए रखने के लिए this solution मिला, लेकिन यह कनेक्शन को पुनर्निर्मित करते समय सदस्यता के लिए जिम्मेदार नहीं है।
मैं वर्तमान में Redis pubsub संदेशों को संभालने कर रहा हूँ मेरी Global.asax फ़ाइल में:
public class Application : HttpApplication
{
protected void Application_Start()
{
var gateway = Resolve<RedisConnectionGateway>();
var connection = gateway.GetConnection();
var channel = connection.GetOpenSubscriberChannel();
channel.PatternSubscribe("workers:job-done:*", OnExecutionCompleted);
}
/// <summary>
/// Handle messages received from workers through Redis.</summary>
private static void OnExecutionCompleted(string key, byte[] message)
{
/* forwarded the response to the client that requested it */
}
}
समस्या तब होती है जब वर्तमान RedisConnection जो भी कारण के लिए बंद कर दिया है। कनेक्शन को रीसेट होने पर RedisConnectionGateway
कक्षा से किसी ईवेंट को आग लगाना समस्या का सबसे आसान समाधान होगा, और एक नया RedisSubscriberChannel
का उपयोग करके पुनः सदस्यता लें। हालांकि, चैनल रीसेट होने पर चैनल को प्रकाशित कोई भी संदेश खो जाएगा।
क्या इस स्थिति को संभालने के लिए अनुशंसित तरीकों के कोई उदाहरण हैं?
मेरा समाधान वास्तव में एक लालसा कनेक्शन देता है यदि यह पहले से खुला है, या यदि नहीं तो एक खुलता है। मेरा मानना है कि "पारंपरिक उपयोग" में कनेक्शन खुला रहेगा और आपको इसे अपने पबसब स्कीमा में नहीं छोड़ा जाएगा। कुछ कारणों से कनेक्शन बंद होने के दुर्लभ मामले में, आपको एक नया मिलेगा, और हाँ - कनेक्शन को रीसेट होने पर चैनल को प्रकाशित संदेश खो जाएंगे। लेकिन यह बहुत ही कम समय के लिए है, और यह नियमित आधार पर होने का अनुमान नहीं लगाता है। वैसे भी, चलो बुकस्लीव के लेखक इस पर प्रकाश डालें (सीसी @marcgravell)। –
@OferZelig धन्यवाद, लेकिन '@ कोई' काम नहीं करता है जब तक कि मैं किसी भी तरह से पोस्ट में शामिल नहीं हूं; पी –
@MarcGravell मुझे यह नहीं पता था; वैसे भी: 1) कोई अन्य एसई उपयोगकर्ता के साथ कुछ कैसे अपना ध्यान आकर्षित करने के लिए संवाद कर सकता है? मेरा मतलब है - एक एसई साइट के अंदर, जांच करके नहीं, प्रोफाइल है और उसके ब्लॉग या ऐसे में जाना; 2) आप एसई में एक सुविधा को कार्यान्वित कर सकते हैं जो इस और अलर्ट की पहचान करता है ( xxx पैटर्न, जहां xxx एक ज्ञात एसई उपयोगकर्ता नाम है)। धन्यवाद! –