मेरे पास यह "MessageQueueReceive" नामक कक्षा में है।एमएसएमक्यू लेनदेन के साथ प्राप्त करता है - रोलबैक फिर से संदेश उपलब्ध नहीं करा रहा है
public MessageQueueTransaction BlockingReceive(out Message message)
{
MessageQueueTransaction tran = null;
message = null;
tran = new MessageQueueTransaction();
tran.Begin();
try
{
message = Queue.Receive(new TimeSpan(0, 0, 5), tran);
}
catch (MessageQueueException ex)
{
// If the exception was a timeout, then just continue
// otherwise re-raise it.
if (ex.MessageQueueErrorCode != MessageQueueErrorCode.IOTimeout)
throw ex;
}
return tran;
}
तब मेरे प्रसंस्करण पाश इस हैं: -
while (!Abort)
{
try
{
tran = this.Queue.BlockingReceive(out msg);
if (msg != null)
{
// Process message here
if (tran != null)
tran.Commit();
}
}
catch (Exception ex)
{
if (tran != null)
tran.Abort();
}
}
नियंत्रण कक्ष उपकरण दिखाता है कि संदेश कतार मैं उपयोग कर रहा हूँ व्यवहार कर रहे हैं। जर्नल कतार सक्षम नहीं है।
इस कोड कतार बनाता है: - जब यह कहा जाता है
private static MessageQueue CreateMessageQueue(string queueName, bool transactional = false)
{
MessageQueue messageQueue = MessageQueue.Create(queueName, transactional);
messageQueue.SetPermissions("Administrators", MessageQueueAccessRights.FullControl,
AccessControlEntryType.Allow);
return messageQueue;
}
व्यवहार पैरामीटर के रूप में "सही" स्थापित किया जाएगा।
मुझे क्या लगता है कि जब संदेश की प्रसंस्करण के दौरान कोई अपवाद होता है, तो tran.Abort कहा जाता है लेकिन उस समय मैं संदेश को कतार में वापस आने की अपेक्षा करता हूं। हालांकि, यह नहीं हो रहा है और संदेश खो गए हैं।
क्या मुझे कुछ याद आ रही है? क्या कोई देख सकता है कि मैं क्या गलत कर रहा हूं?
क्या कतार आप श्रोता सेवा के लिए स्थानीय पर प्राप्त कर रहे हैं? –
हां, भेजने और प्राप्त करने की प्रक्रिया और कतार सभी एक ही बॉक्स पर हैं। वे निजी कतार हैं। मेरे पास एक ही कोड कुछ अलग-अलग बक्से पर चल रहा है, और सभी को एक ही समस्या दिखाई देती है।इससे पता चलता है कि यह मशीन के बारे में कुछ कर्कश के बजाय इस कोड से संबंधित है। – JohnCC
स्पष्ट प्रश्न मुझे लगता है। क्या आप वाकई गर्भपात के साथ अपवाद को मार रहे हैं? क्या यह संभव है कि आपके संदेश हैंडलिंग कोड में एक अपवाद फेंक दिया गया है जिसे पकड़ा गया है और फिर फेंक दिया गया है, इसलिए यह कभी अपवाद के साथ अपवाद हैंडलर को बुलबुला नहीं करता है? –