मुझे पता है कि एसटीएम लेनदेन के भीतर दुष्प्रभावों के साथ कार्यों को रखने के लिए आम तौर पर यह बुरा व्यवहार है, क्योंकि उन्हें संभावित रूप से पुनः प्रयास किया जा सकता है और कई बार बुलाया जा सकता है।एसटीएम लेनदेन में दुष्प्रभावों को पूरा करने के लिए एजेंटों का उपयोग
यह मेरे लिए होता है हालांकि आप एजेंटों का उपयोग यह सुनिश्चित करने के लिए कर सकते हैं कि लेनदेन सफलतापूर्वक पूरा होने के बाद साइड इफेक्ट्स निष्पादित हो जाएं।
उदा।
(dosync
// transactional stuff
(send some-agent #(function-with-side-effects params))
// more transactional stuff
)
क्या यह अच्छा अभ्यास है?
पेशेवर/विपक्ष/नुकसान क्या हैं?
एसटीएम के मूल विचारों में से एक विफलता परमाणुता है। इससे इससे कैसे मदद मिलेगी? –
बिंदु साइड इफेक्ट्स के लिए है जो लेनदेन सफल होने के बाद होने की आवश्यकता है लेकिन लेनदेन का हिस्सा नहीं हैं, उदा। एक पुष्टिकरण ईमेल भेजना। जाहिर है, आप लेनदेन को फिर से हर बार ऐसा नहीं करना चाहते हैं या अन्यथा आप बहुत गुस्सा/भ्रमित प्राप्तकर्ता प्राप्त कर सकते हैं! – mikera