2015-10-18 5 views
6

tutorials on RabbitMq's site सुंदर सीधे आगे हैं, लेकिन मैंने देखा है कि the Rpc example में, डेवलपर्स EventingBasicConsumer और अन्यत्र इस्तेमाल घटना से निपटने के मॉडल का उपयोग करने के बजाय धागा-अवरुद्ध कॉल consumer.Queue.Dequeue() उपयोग करने के लिए चुनें।RabbitMQ Rpc: EventingBasicConsumer या QueueingBasicConsumer

current documentation के माध्यम से देख यह कहा गया कि

संस्करण 3.5.0 आवेदन कॉलबैक हैंडलर्स के रूप में अवरुद्ध संचालन आह्वान कर सकते हैं (जैसे IModel.QueueDeclare या IModel.BasicCancel के रूप में)। IBasicConsumer कॉलबैक समवर्ती रूप से लागू किए जाते हैं।

कहाँ the old documentation (वी। 1.5.0) में कहा गया है कि यह समर्थित नहीं है

आवेदन कॉलबैक हैंडलर्स AMQP संचालन अवरुद्ध आह्वान नहीं होना चाहिए ( जैसे IModel.QueueDeclare या IModel.BasicCancel)। यदि वे करते हैं, तो चैनल डेडलॉक होगा। [...] इस कारण से, QueueingBasicConsumer एक कतार की सदस्यता लेने का सबसे सुरक्षित तरीका है।

क्या यह हो सकता है कि आरपीसी उदाहरण अपडेट नहीं किया गया हो? या क्या मैं कुछ न कुछ भूल रहा हूं? मैं इसके बारे में कुछ दस्तावेज की ओर इशारा करने की बहुत सराहना करता हूं।

उत्तर

2

आप सही हैं, QueueingBasicConsumer का उपयोग करने की कोई आवश्यकता नहीं है। इस बारे में RabbitMQ ट्यूटोरियल में an issue है।

मैंने a pull request भेजा है और इसे विलय कर दिया गया है, उम्मीद है कि दस्तावेज़ीकरण जल्द ही अपडेट हो जाएगा।

संबंधित मुद्दे