Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

Windows सेवा और SQL सर्वर का उपयोग करके OneWay WCF संदेशों में कतारबद्ध करना

मैं एक डीबीए हूं, जिससे मेरी प्रतिक्रिया का स्वाद चखता है, लेकिन यहां मैं क्या करूंगा:

  1. यदि आप SQL 2005+ का उपयोग कर रहे हैं, तो संदेशों को किसी तालिका में संग्रहीत करने के बजाय डेटाबेस में संग्रहीत करने के लिए सेवा ब्रोकर का उपयोग करें। इससे आपको एक्यूइंग मैकेनिज्म मिलता है, जिससे आप एमएसएमक्यू से छुटकारा पा सकते हैं। आपके पास एक टेबल भी होगी, लेकिन यह केवल वार्तालाप हैंडल (अनिवार्य रूप से, संदेश के लिए एक सूचक) को संग्रहीत करने के साथ-साथ इस संदेश को कितनी बार करने का प्रयास करता है। अंत में, आप किसी प्रकार का "डेड लेटर बॉक्स" चाहते हैं, जहां आपके पुनः प्रयास की सीमा तक पहुंचने वाले संदेश जाते हैं।
  2. अपने संदेश संसाधन कोड में, निम्न कार्य करें:
    • लेन-देन शुरू करें
    • कतार से संदेश प्राप्त करें
    • यदि पुन:प्रयास की संख्या सीमा से अधिक है, तो इसे डेड लेटर बॉक्स में ले जाएं और प्रतिबद्ध करें
    • इस संदेश के लिए टेबल पर काउंटर बढ़ाएँ
    • संदेश संसाधित करें
    • अगर प्रोसेसिंग सफल हो जाती है, तो लेन-देन करें
    • यदि प्रसंस्करण विफल हो जाता है, तो समान सामग्री के साथ एक नया संदेश कतार में रखें और फिर लेनदेन करें

ध्यान दें कि कोई नियोजित रोलबैक नहीं हैं। सर्विस ब्रोकर में रोलबैक खराब हो सकता है; यदि आप सफलतापूर्वक प्राप्त किए बिना 5 बार रोलबैक करते हैं, तो कतार संलग्न और डीक्यूइंग दोनों के लिए अक्षम हो जाएगी। लेकिन आप अभी भी उस मामले के लिए लेन-देन करना चाहते हैं जब आपका संदेश प्रोसेसर प्रसंस्करण के बीच में मर जाता है (यानी सर्वर क्रैश हो जाता है)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2012 में विस्तारित ईवेंट में एक महत्वपूर्ण परिवर्तन

  2. GDPR अनुपालन और आपका SQL सर्वर

  3. T-SQL का उपयोग करके SQL सर्वर में एक CHECK बाधा को संशोधित करें

  4. SQL सर्वर (T-SQL उदाहरण) में 'datetime2' को 'तिथि' में बदलें

  5. SQL सर्वर में लॉजिकल या ऑपरेटर क्या है - SQL सर्वर / TSQL ट्यूटोरियल पार्ट 119