मुझे 4 कार्यकर्ता भूमिकाओं के साथ क्लाउड सेवा परिनियोजन मिला, जिसमें से एक ऑटो-स्केलिंग सक्षम हो गया। जैसे ही ऑटो-स्केलिंग होती है, सभी भूमिकाओं के सभी उदाहरण रीसाइक्लिंग होते हैं।Azure क्लाउड सेवा भूमिका के उदाहरण - ऑटो-स्केलिंग - ईवेंट को फायरिंग
आदर्श रूप में, मैं रीसाइक्लिंग से भूमिकाओं को रोकना चाहता हूं या कम से कम नियंत्रित भूमिका में अन्य सभी भूमिकाओं के काम को समाप्त करना चाहता हूं।
मुझे पता चला कि आप react to the RoleEnvironment.Changing event कर सकते हैं और इसे एक सुंदर शटडाउन का अनुरोध करने के लिए रद्द कर सकते हैं (यानी ऑनस्टॉप को बुलाया जा रहा है)। हालांकि, चेंजिंग इवेंट हैंडलर में ट्रेसिंग आउटपुट जोड़कर, मैंने देखा कि चेंजिंग इवेंट स्पष्ट रूप से भी नहीं निकाल दिया गया था, इसलिए रद्दीकरण को पंजीकृत नहीं किया जा रहा था।
private void RoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e)
{
// This tracing output does not show up in the logs table.
Trace.TraceInformation("RoleEnvironmentChanging event fired.");
if ((e.Changes.Any(change => change is RoleEnvironmentConfigurationSettingChange)))
{
// This one neither.
Trace.TraceInformation("One of the changes is a RoleEnvironmentConfigurationSettingChange. Cancelling..");
e.Cancel = true;
}
if ((e.Changes.Any(change => change is RoleEnvironmentTopologyChange)))
{
// This one neither.
Trace.TraceInformation("One of the changes is a RoleEnvironmentTopologyChange. Cancelling.");
e.Cancel = true;
}
}
public override bool OnStart()
{
// Hook up to the changing event to prevent roles from unnecessarily restarting.
RoleEnvironment.Changing += RoleEnvironmentChanging;
// Set the maximum number of concurrent connections
ServicePointManager.DefaultConnectionLimit = 12;
bool result = base.OnStart();
return result;
}
इसके अलावा adding an internal endpoint प्रत्येक भूमिका के लिए परिवर्तन नहीं लाए। यहां .csdef से कॉन्फ़िगरेशन:
<WorkerRole name="MyRole" vmsize="Medium">
[...ConfigurationSettings...]
<Endpoints>
<InternalEndpoint name="Endpoint1" protocol="http" />
</Endpoints>
</WorkerRole>
प्रोटोकॉल को "किसी भी" में बदलना सफल नहीं था।
स्केलिंग ऑपरेशन के बाद मैं अपनी भूमिका के उदाहरण रीसाइक्लिंग से कैसे रोक सकता हूं?
संपादित करें:
» शामिल कोड
» फिक्स्ड लिखने की त्रुटियों
उत्तर के लिए धन्यवाद। लेकिन केवल एक वेबसाइट की प्रतिलिपि बनाना जो मैंने अपने प्रश्न में भी शामिल किया और कहा कि यह काम नहीं करता है, मेरे लिए बहुत उपयोगी नहीं है, क्षमा करें! कोई अन्य विचार क्यों यह मेरे लिए काम नहीं करता है? –