का निपटारा किया गया है मुझे पूरा होने पर ब्रोकर्ड मैसेज को चिह्नित करने में समस्या है।ब्रोकर्ड मैसेज
सरल कोड है कि तरह काम करता है उम्मीद:
private void OnMessageArrived(BrokeredMessage message)
{
var myObj= message.GetBody<MyObject>();
//do things with myObj
message.Complete();
}
जब मैं myObj मैं के साथ समाप्त करने के लिए उपयोगकर्ता के लिए प्रतीक्षा करने की कोशिश अपवाद:
brokeredmessage निपटारा कर दिया गया है
नीचे कोड:
private Dictionary<long, BrokeredMessage> ReceivedMessages;
ReceivedMessages = new Dictionary<long, BrokeredMessage>();
private void OnMessageArrived(BrokeredMessage message)
{
var myObj= message.GetBody<MyObject>();
ReceivedMessages.Add(myObj.Id, message);
//do things with myObj
}
private void Button_Click(object sender, RoutedEventArgs e)
{
// get myObj on which user clicked
ReceivedMessages[myObj.Id].Complete();
ReceivedMessages.Remove(myObj.Id);
}
मेरे लिए यह ServiceBus किसी भी तरह में C# वास्तविक वस्तु के लिए कनेक्शन खो
कुछ एफई में अलग वस्तु के समान है, सिर्फ इस मामले में वस्तु ServiceBus से अलग है की तरह लग रहा
संपादित करें:
संदेश क्लिक बटन के बाद ही संदेश को चिह्नित करना मेरे लिए महत्वपूर्ण है। यदि एसी नीचे चला जाता है (या इसी तरह की चीजें) मैं चाहता हूं कि संदेश अभी भी सेवा बस विषय पर बने रहें ताकि अगली बार उपयोगकर्ता ऐप शुरू कर सकें, फिर भी वह उन संदेशों को प्राप्त करेगा जिन्हें उन्होंने संसाधित नहीं किया था।
क्या आप इस समस्या के समाधान के समाधान की सिफारिश कर सकते हैं: 1. संदेश प्राप्त हुआ, इसका डेटा टुकड़ों में तोड़ दिया गया और एसिंक्रोनस प्रोसेसिंग को भेजा गया। हम तब तक संदेश लॉक करना चाहते हैं जब तक कि उसका डेटा उस उपयोगकर्ता द्वारा संसाधित नहीं किया जाता है जिसने इसे अधिग्रहित किया है। 2. यदि कोई अपवाद होता है या उपयोगकर्ता प्रोग्राम छोड़ देता है, तो संदेश को अनलॉक करें ताकि कोई अन्य उपयोगकर्ता इसे पर संसाधित कर सके। 3. जब डेटा का अंतिम भाग संसाधित हो जाता है, तो सेवाबस से संदेश हटा दें डेटा ठीक से संसाधित किया गया था। – ErroneousFatality
हां। जब तक आप पूरा नहीं कर लेते हैं तब तक आप संदेश पर पूर्ण() को कॉल करना बंद कर देते हैं। –
अगर मैं गलत हूं तो क्षमा करें, लेकिन यह वही है जो ओपी कर रहा है। वह एक शब्दकोश में संदेश बचाता है ताकि एसिंक प्रसंस्करण खत्म हो जाने के बाद वह पूर्ण कॉल कर सके। आपने अनुशंसा की कि वह इसके बजाय ऐसा न करें और केवल उस डेटा को सहेज लें जो वह संसाधित कर रहा है। एसिंक प्रक्रिया के बाद संदेश पर पूरा कैसे होगा? – ErroneousFatality