एक मेज है कि एक कतार के रूप में काम कर रहा है यह देखते हुए के साथ एक डीबी कतार के रूप में एसक्यूएल सर्वर का उपयोग करना, कैसे मैं सबसे अच्छा तो यह है कि तालिका/प्रश्नों कॉन्फ़िगर कर सकते हैं कतार समवर्ती से अनेक ग्राहकों प्रक्रिया?कई ग्राहकों
उदाहरण के लिए, नीचे दी गई तालिका एक आदेश है कि एक कार्यकर्ता संसाधित करना होगा इंगित करता है। जब कार्यकर्ता किया जाता है, तो यह संसाधित मूल्य को सत्य पर सेट करेगा।
| ID | COMMAND | PROCESSED |
| 1 | ... | true |
| 2 | ... | false |
| 3 | ... | false |
ग्राहकों से एक आदेश प्राप्त तो जैसे पर काम करने दे सकता है:
select top 1 COMMAND
from EXAMPLE_TABLE
with (UPDLOCK, ROWLOCK)
where PROCESSED=false;
हालांकि, अगर एक से अधिक कार्यकर्ता हैं, प्रत्येक आईडी = 2 के साथ पंक्ति पाने के लिए कोशिश करता है। केवल पहले निराशावादी ताला मिलेगा, बाकी इंतजार करेंगे। फिर उनमें से एक पंक्ति 3, आदि मिल जाएगा
क्या जानकारी/विन्यास प्रत्येक कार्यकर्ता ग्राहक समवर्ती उन पर प्रत्येक एक अलग पंक्ति और काम पाने के लिए अनुमति होगी?
संपादित करें:
कई जवाब एक में प्रक्रिया राज्य रिकॉर्ड करने के लिए मेज खुद का उपयोग कर में बदलाव का सुझाव दें। मैंने सोचा कि यह एक लेनदेन के भीतर संभव नहीं होगा। (अर्थात, क्या राज्य को अद्यतन करने, अगर कोई अन्य कार्यकर्ता इसे देखेंगे जब तक TXN के लिए प्रतिबद्ध है की बात है?) शायद सुझाव है:
# start transaction
update to 'processing'
# end transaction
# start transaction
process the command
update to 'processed'
# end transaction
इस तरह से लोगों को आमतौर पर इस समस्या दृष्टिकोण है? ऐसा लगता है कि यदि संभव हो तो डीबी द्वारा समस्या को बेहतर तरीके से संभाला जाएगा।
डुप्लिकेट ... .. –
कृपया मुझे मूल पर इंगित करें, क्योंकि एसओ ने एक डुप्ली की सिफारिश नहीं की थी। – Synesso
माइक्रोसॉफ्ट मैसेज क्व्यूइंग (एमएसएमक्यू) के रूप में किसी भी विंडोज सर्वर के लिए पहले से ही उपलब्ध होने पर यह सारी कार्यक्षमता फिर से बनाने की सभी परेशानी क्यों हो रही है ?? उपयोग करें जो उपलब्ध है - लगातार पहिया का पुन: आविष्कार न करें! –