การเปลี่ยนแปลงการกำหนดค่าคิวข้อความใน Magento 2 EE 2.1


10

ฉันได้ดูการทำงานของคิวข้อความ EE แต่ดูเหมือนว่าจะไม่สมบูรณ์

ก่อนหน้า 2.1 มีการใช้งานที่สมเหตุสมผลซึ่งอนุญาตให้คุณสร้าง a 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/magento/magento2-samples/blob/master/sample- โมดูลตัวอย่างข้อความคิว / etc / ผู้เผยแพร่ / หัวข้อ / consumer / bind ที่เลิกใช้แล้วนั้นยังสามารถใช้แยกกันได้ แต่ไม่สามารถใช้ร่วมกับ schema โบรกเกอร์ / คิวที่ปรับปรุงใหม่ได้

อย่างไรก็ตามไม่มีสิ่งนี้ปรากฏในเอกสารอย่างเป็นทางการและไม่ชัดเจนในทันทีว่าทำไมการกำหนดค่าจึงถูกแยกออกและจำเป็นต้องทำซ้ำในบางกรณี ที่สำคัญดูเหมือนว่าจะไม่มีสิ่งอำนวยความสะดวกในการกำหนดการเชื่อมโยงในขณะนี้ด้วยชื่อหัวข้อที่ใช้เป็นรหัสเส้นทางแทน สิ่งนี้จะทำให้ไม่สามารถใช้อักขระพิเศษสำหรับการผูกคิวได้ ดังนั้นจึงดูเหมือนว่าได้รับการปรับโครงสร้างใหม่ แต่การทำงานที่สูญเสีย

เมื่อทราบบวกโมดูลตอนนี้ใช้สคริปต์ติดตั้งที่เกิดขึ้นเพื่อให้มีการเปลี่ยนแปลงการตั้งค่าคิวมีการติดตั้งเมื่อคุณเรียกใช้magento/module-amqp magento setup:upgradeการเปลี่ยนแปลงนี้ยังไม่ถูกนำไปใช้กับmagento/module-mysql-mqโมดูล

ดังนั้นฉันอยากรู้ว่า: a) ฉันผิดทั้งหมดและมีวิธีสร้างการผูกและยืดหยุ่นกว่าที่คิดหรือไม่ b) ทำไมการกำหนดค่าจึงถูกแบ่ง?


ตามบันทึกข้างเป็นฉันได้รับการทดสอบด้วยนี้ฉันได้รับการใช้หนึ่งในตัวอย่างที่โทโพโลยีจากบทเรียน RabbitMQ ที่https://www.rabbitmq.com/tutorials/tutorial-four-php.html :

ป้อนคำอธิบายรูปภาพที่นี่

การกำหนดค่าที่เลิกใช้นี้ทำให้โทโพโลยีเป็นส่วนใหญ่:

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>

UPDATE: เอกสารได้รับการปรับปรุงแล้ว ขณะนี้ไม่รองรับการใช้สัญลักษณ์แทนความยืดหยุ่นในการแลกเปลี่ยนหัวข้อจึงเป็นโมฆะ ดังนั้นฉันจึงพยายามสร้างการแลกเปลี่ยนโดยตรงต่อไปนี้ขึ้นใหม่:

ป้อนคำอธิบายรูปภาพที่นี่

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>

อย่างไรก็ตามเมื่อคุณเรียกใช้งานผู้บริโภคเฉพาะหัวข้อ "สีเขียว" เท่านั้นที่ถูกส่งไปยัง consumerTwo มันจะละเว้นหัวข้อ "สีดำ" ดังนั้นดูเหมือนว่าสิ่งที่ดีที่สุดที่สามารถทำได้คือการแลกเปลี่ยนโดยตรงโดยมีเพียงหนึ่งการผูกมัดต่อคิวและผู้บริโภค

คำตอบ:


1

เราได้เผยแพร่เอกสารเกี่ยวกับคิวข้อความ 2.1 ที่http://devdocs.magento.com/guides/v2.1/config-guide/mq/config-mq.htmlและhttp://devdocs.magento.com/guides/ v2.1 / config คู่มือ / MQ / คิว migration.html


ขอบคุณ @KHarper เอกสารที่อัปเดตมีประโยชน์มาก น่าเศร้าที่มันยืนยันว่าความยืดหยุ่นของการกำหนดค่าคิวลดลง
philpot

ฉันได้เพิ่มการอัปเดตไปยังโพสต์ดั้งเดิมซึ่งมีรายละเอียดเกี่ยวกับความยืดหยุ่นที่ จำกัด หวังว่าคุณจะสามารถให้คำแนะนำได้หากมีวิธีในการสร้างโทโพโลยีการแลกเปลี่ยนโดยตรง
philpot

เพียงแจ้งให้คุณทราบว่ามีการเปลี่ยนแปลงอีกครั้งใน 2.2 *
André Ferraz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.