स्थिति की कल्पना कीजिए:डेटाबेस लेनदेन के साथ घालमेल RabbitMQ
var txn = new DatabaseTransaction();
var entry = txn.Database.Load<Entry>(id);
entry.Token = "123";
txn.Database.Update(entry);
PublishRabbitMqMessage(new EntryUpdatedMessage { ID = entry.ID });
// A bit more of processing
txn.Commit();
अब EntryUpdatedMessage
के एक उपभोक्ता संभवतः इस संदेश से पहले लेन-देन txn
लिए प्रतिबद्ध है मिलता है और इसलिए कर सकते हैं अद्यतन देखने के लिए सक्षम नहीं होगा।
अब, मुझे पता है कि खरगोश एमक्यू स्वयं लेनदेन का समर्थन करता है, लेकिन हम वास्तव में उनका उपयोग नहीं कर सकते क्योंकि हम प्रत्येक प्रकाशन के लिए एक नया IModel
बनाते हैं और प्रति-थ्रेड मॉडल हमारे परिदृश्य में वास्तव में बोझिल है (एएसपी.नेट वेब एप्लिकेशन)।
मैंने डीबी लेनदेन के दौरान प्रकाशित होने के कारण संदेशों की एक सूची रखने का विचार किया, लेकिन यह वास्तव में सुगंधित समाधान है।
इसे संभालने का सही तरीका क्या है?