प्रसंस्करण बंद कर देता है Azure ServiceBus और OnMessage कॉल का उपयोग करके मैं यह निर्धारित करने का एक तरीका ढूंढ रहा हूं कि ऑनमेसेज इवेंट पंप कतार से पढ़ना बंद कर देता है या नहीं।एज़ूर सर्विस बस, यह निर्धारित करें कि ऑनमेसेज
OnMessage को हमारे कनेक्शन नीचे के रूप में कॉन्फ़िगर किया गया है:
protected virtual void DoSubscription(string queueName, Func<QueueRequest, bool> callback)
{
var client = GetClient(queueName, PollingTimeout);
var transformCallback = new Action<BrokeredMessage>((message) =>
{
try
{
var request = message.ToQueueRequest();
if (callback(request))
{
message.Complete();
}
else
{
message.Abandon();
Log.Warn("DoSubscription: Message Failed to Process Gracefully: {0}{1}", Environment.NewLine, JsonConvert.SerializeObject(request));
}
}
catch (Exception ex)
{
Log.Error("DoSubscription: Message Failed to Process With Exception:", ex);
message.Abandon();
}
});
var options = new OnMessageOptions
{
MaxConcurrentCalls = _config.GetInt("MaxThreadsPerQueue"),
AutoComplete = false,
AutoRenewTimeout = new TimeSpan(0,0,1)
};
options.ExceptionReceived += OnMessageError;
client.OnMessage(transformCallback, options);
}
समस्या हम सामना कर रहे हैं समय कोई संदेश के साथ नए संदेश है कि पंक्तिबद्ध कर रहे हैं OnMessage घटना से ही उठाए जा करने के लिए असफल पंक्तिबद्ध किया जा रहा की अवधि के बाद है जब तक एप्लिकेशन पुनरारंभ नहीं हो जाता तब तक पंप करें।
मुझे एहसास है कि वर्कर भूमिकाओं का उपयोग करके ऐसा करने के तरीके हैं, हालांकि निगरानी और प्रबंधन उद्देश्यों के लिए हमने इसे वेब ऐप के एप्लिकेशन स्टार्ट में लागू करने का निर्णय लिया है।
क्या आपने डेडलेटर कतार की जांच की थी? अगर वहां संदेश हैं, तो आपको अपने संदेश प्रसंस्करण के असफल होने के कारणों को देखने में सक्षम होना चाहिए। – mert
डीएल में वे बस टाइमआउट। प्रोग्रामेटिक रूप से प्रक्रिया अभी रुक गई। – VulgarBinary