আমি EE বার্তাগুলির সারি কার্যকারিতা দেখছি, তবে মনে হচ্ছে এটি অসম্পূর্ণ।
২.১ এর আগে একটি যুক্তিসঙ্গত কার্যকরী বাস্তবায়ন ছিল যা আপনাকে etc/queue.xml
অফিসিয়াল ডকুমেন্টেশনে বর্ণিত হিসাবে প্রকাশক, বিষয়, ভোক্তা এবং সারিগুলি সংজ্ঞায়িত করতে একটি তৈরি করতে দেয়: http://devdocs.magento.com/guides/v2.0/config-guide /mq/config-mq.html ।
কনফিগারেশনে সংজ্ঞায়িত কোনও বিষয়ের সাথে তাল মিলিয়ে বাঁধাই তৈরি করতে সক্ষম না হওয়ার মতো সীমাবদ্ধতা রয়েছে, যা আপনার সামনে সমস্ত সম্ভাব্য বিষয়ের সম্ভাবনাগুলি সংজ্ঞায়িত করার কারণে নমনীয়তা সীমাবদ্ধ করে। পুনরাবৃত্তি ইনস্টল স্ক্রিপ্টের অভাবের অর্থ এছাড়াও ইনস্টলার স্ক্রিপ্টটি আবার চালানোর জন্য আপনাকে কিছুটা হ্যাকিং করতে হয়েছিল।
২.১ হিসাবে প্রকাশক, বিষয়, গ্রাহক এবং বাঁধাইয়ের উপাদানগুলি etc/queue.xml
অবচয় করা হয়েছে এবং কনফিগারেশনটি এর মধ্যে বিভক্ত হয়ে গেছে etc/queue.xml
এবং এটি etc/communication.xml
এখানে দেখা যাবে: https://github.com/magento/magento2-sams/blob/master/sample- মডিউল-নমুনা-বার্তা-সারি / ইত্যাদি / । অবহেলিত প্রকাশক / বিষয় / ভোক্তা / বাইন্ড স্কিমাটি এখনও বিচ্ছিন্নভাবে ব্যবহার করা যেতে পারে, তবে সংশোধিত ব্রোকার / সারি স্কিমার সাথে একত্রে নয়।
যাইহোক, এর কোনওটিই অফিসিয়াল ডকুমেন্টেশনে হাজির হয়নি এবং এটি কনফিগারেশনটি কেন বিভক্ত হয়েছে এবং তা কিছু ক্ষেত্রে নকলের প্রয়োজন তা অবিলম্বে পরিষ্কার করা যায় না। আরও গুরুত্বপূর্ণ বিষয়, এখন বাঁধার সংজ্ঞা দেওয়ার কোনও সুবিধা বলে মনে হচ্ছে না, পরিবর্তে বিষয়টির নামটি রাউটিং কী হিসাবে ব্যবহৃত হয়েছে। এর ফলে বাঁধাগুলির সারিগুলির জন্য বিশেষ অক্ষর ব্যবহার করা অসম্ভব হয়ে পড়ে। সুতরাং এটি রিফ্যাক্টর হয়েছে তবে কার্যকারিতা হারিয়েছে বলে মনে হয়।
ইতিবাচক নোটে, magento/module-amqp
মডিউলটি এখন একটি পুনরাবৃত্তি ইনস্টলার স্ক্রিপ্ট ব্যবহার করে যাতে রান করার সময় সারি কনফিগারেশনের পরিবর্তনগুলি ইনস্টল হয় magento setup:upgrade
। magento/module-mysql-mq
যদিও এই পরিবর্তনটি মডিউলটিতে এখনও প্রয়োগ করা হয়নি।
সুতরাং আমি জানতে চাই: ক) আমি কি এই সমস্ত ভুল পেয়েছি এবং বাইন্ডিংগুলি তৈরি করার আসলে উপায় আছে এবং এটি যেটি মনে হয় তার চেয়ে আরও নমনীয়? খ) কনফিগারেশনটি কেন বিভক্ত হয়েছে?
পার্শ্ব নোট হিসাবে, আমি এটির পরীক্ষা নিরীক্ষা করার সময় https://www.rabbitmq.com / টিউটোরিয়ালস / টিউটোরিয়াল- চারটি-পিএইচপি এইচটিএমএলে র্যাবিট এমকিউ টিউটোরিয়ালগুলির একটি টপোলজির উদাহরণ ব্যবহার করেছি :
এই অবহেলিত কনফিগারেশনটি বেশিরভাগ অংশের জন্য টপোলজি অর্জন করেছে:
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>
তবে, আপনি যখন গ্রাহকরা চালান, কেবলমাত্র "সবুজ" বিষয়টি কনজিউমারটো-তে পৌঁছে দেওয়া হয়, এটি "কালো" বিষয়টিকে উপেক্ষা করে। সুতরাং মনে হয় যে সর্বোত্তম যেটি সম্পাদন করা যায় তা হ'ল সারিবদ্ধ এবং ভোক্তা কেবলমাত্র একটি বাঁধাইয়ের সাথে সরাসরি এক্সচেঞ্জ।