मैगेंटो 2 ईई 2.1 में संदेश कतार विन्यास परिवर्तन


10

मैं ईई संदेश कतारों की कार्यक्षमता को देख रहा हूं, लेकिन ऐसा लगता है कि यह अधूरा है।

2.1 से पहले एक यथोचित कार्यात्मक कार्यान्वयन था जो आपको etc/queue.xmlआधिकारिक दस्तावेज में वर्णित प्रकाशकों, विषयों, उपभोक्ताओं और कतारों को परिभाषित करने की अनुमति देता था : http://devdocs.magento.com/guides/v2.0/config-guide /mq/config-mq.html

जब तक वे कॉन्फ़िगरेशन में परिभाषित विषय से मेल नहीं खाते, सीमाएँ बनाने में सक्षम नहीं थीं, जैसे कि लचीलेपन को सीमित कर दिया था क्योंकि आपको सामने वाले सभी संभावित विषय संभावनाओं को परिभाषित करना था। आवर्ती इंस्टॉल स्क्रिप्ट की कमी का मतलब यह भी था कि इंस्टॉलर स्क्रिप्ट को फिर से चलाने के लिए आपको थोड़ी हैकिंग करनी होगी।

2.1 के रूप में प्रकाशक, विषय, उपभोक्ता और बाँध में तत्वों etc/queue.xmlअमान्य हो जाने और विन्यास के बीच विभाजित है etc/queue.xmlऔर etc/communication.xml, के रूप में यहां देखा जा सकता: https://github.com/magento/magento2-samples/blob/master/sample- मॉड्यूल-नमूना-संदेश-कतार / आदि / । हटाए गए प्रकाशक / विषय / उपभोक्ता / बाइंड स्कीमा का उपयोग अभी भी अलगाव में किया जा सकता है, लेकिन संशोधित ब्रोकर / कतार स्कीमा के साथ संयोजन में नहीं।

हालांकि, आधिकारिक दस्तावेज में इसका कुछ भी नहीं दिखाई दिया है और इसकी तुरंत स्पष्ट नहीं है कि कॉन्फ़िगरेशन क्यों विभाजित किया गया है और कुछ मामलों में दोहराव की आवश्यकता है। इससे भी महत्वपूर्ण बात यह है कि अब बाइंडिंग को परिभाषित करने की सुविधा नहीं है, इसके बजाय रूटिंग कुंजी के रूप में उपयोग किए जाने वाले विषय नाम के साथ। यह बदले में बाध्यकारी कतारों के लिए विशेष वर्णों का उपयोग करना भी असंभव बनाता है। तो ऐसा प्रतीत होता है कि रिफैक्टेड लेकिन खोई हुई कार्यक्षमता है।

एक सकारात्मक नोट पर, magento/module-amqpमॉड्यूल अब एक आवर्ती इंस्टॉलर स्क्रिप्ट का उपयोग करता है इसलिए जब आप चलते हैं तो कतार कॉन्फ़िगरेशन परिवर्तन स्थापित होते हैं magento setup:upgrade। यह परिवर्तन magento/module-mysql-mqअभी तक मॉड्यूल पर लागू नहीं किया गया है ।

इसलिए मैं जानना चाहता हूं: क) क्या मुझे यह सब गलत लगा है और वास्तव में बाइंडिंग बनाने का तरीका है और यह जितना लगता है उससे कहीं अधिक लचीला है? बी) कॉन्फ़िगरेशन क्यों विभाजित किया गया है?


एक साइड नोट के रूप में, जैसा कि मैं इसके साथ प्रयोग कर रहा हूं, मैं https://www.rabbitmq.com/tutorials/tutorial-four-php.html पर RabbitMQ ट्यूटोरियल से टोपोलॉजी उदाहरणों में से एक का उपयोग कर रहा हूं :

यहाँ छवि विवरण दर्ज करें

इस अपवर्तित कॉन्फ़िगरेशन ने अधिकांश भाग के लिए टोपोलॉजी प्राप्त की:

queue.xml:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework-message-queue:etc/queue.xsd">
    <topic name="quick.orange.rabbit" schema="Example\MessageQueue\Api\MessageInterface" publisher="default" />
    <topic name="quick.orange.fox" schema="Example\MessageQueue\Api\MessageInterface" publisher="default" />
    <topic name="lazy.pink.rabbit" schema="Example\MessageQueue\Api\MessageInterface" publisher="default" />
    <topic name="lazy.orange.elephant" schema="Example\MessageQueue\Api\MessageInterface" publisher="default" />
    <topic name="lazy.brown.fox" schema="Example\MessageQueue\Api\MessageInterface" publisher="default" />
    <consumer name="consumerOne" queue="queueOne" connection="amqp" class="Example\MessageQueue\Model\Subscriber" method="processMessage" executor="Magento\Framework\MessageQueue\BatchConsumer" />
    <consumer name="consumerTwo" queue="queueTwo" connection="amqp" class="Example\MessageQueue\Model\Subscriber" method="processMessage" executor="Magento\Framework\MessageQueue\BatchConsumer" />
    <bind queue="queueOne" exchange="magento" topic="*.orange.*" />
    <bind queue="queueTwo" exchange="magento" topic="*.*.rabbit"  />
    <bind queue="queueTwo" exchange="magento" topic="lazy.#" />
</config>

अद्यतन: प्रलेखन अब अद्यतन किया गया है। वाइल्डकार्ड अब समर्थित नहीं हैं, इसलिए किसी विषय विनिमय के लचीलेपन को शून्य प्रदान किया जाता है। इसलिए मैंने निम्नलिखित प्रत्यक्ष विनिमय को फिर से बनाने की कोशिश की:

यहाँ छवि विवरण दर्ज करें

communication.xml:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Communication/etc/communication.xsd">
    <topic name="orange" request="Example\MessageQueueExample\Api\MessageInterface" />
    <topic name="black" request="Example\MessageQueueExample\Api\MessageInterface" />
    <topic name="green" request="Example\MessageQueueExample\Api\MessageInterface" />
</config>

queue.xml:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework-message-queue:etc/queue.xsd">
    <broker topic="orange" type="amqp" exchange="magento">
        <queue consumer="consumerOne" name="queueOne" handler="Example\MessageQueueExample\Model\Subscriber::processMessage" consumerInstance="Magento\Framework\MessageQueue\Consumer"/>
    </broker>
    <broker topic="black" type="amqp" exchange="magento">
        <queue consumer="consumerTwo" name="queueTwo" handler="Example\MessageQueueExample\Model\Subscriber::processMessage" consumerInstance="Magento\Framework\MessageQueue\Consumer"/>
    </broker>
    <broker topic="green" type="amqp" exchange="magento">
        <queue consumer="consumerTwo" name="queueThree" handler="Example\MessageQueueExample\Model\Subscriber::processMessage" consumerInstance="Magento\Framework\MessageQueue\Consumer"/>
    </broker>
</config>

हालाँकि, जब आप उपभोक्ताओं को चलाते हैं, तो केवल "हरे" विषय को उपभोक्ताटाउ को रूट किया जाता है, यह "ब्लैक" विषय को अनदेखा करता है। तो ऐसा लगता है कि सबसे अच्छा जो पूरा किया जा सकता है वह एक प्रत्यक्ष विनिमय है जिसमें प्रति पंक्ति और उपभोक्ता केवल एक बंधन है।

जवाबों:


1

हमने http://devdocs.magento.com/guides/v2.1/config-guide/mq/config-mq.html और http://devdocs.magento.com/guides/ पर 2.1 संदेश कतारों के बारे में प्रलेखन प्रकाशित किया है। v2.1 / config-गाइड / MQ / कतार-migration.html


थैंक्स @KHarper, अपडेटेड डॉक्यूमेंटेशन बहुत मददगार है। अफसोस की बात है कि यह पुष्टि करता है कि कतार विन्यास का लचीलापन कम हो गया है।
9

मैंने सीमित लचीलेपन का विवरण देते हुए मूल पोस्ट में एक अपडेट जोड़ा है, उम्मीद है कि आप सलाह दे पाएंगे कि क्या डायरेक्ट एक्सचेंज टोपोलॉजी बनाने का कोई तरीका है।
दर्शन

इसके अलावा, आपको यह बताने के लिए कि इसे 2.2 में फिर से बदल दिया गया है। *
एंड्रे फेरेज़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.