EE mesaj kuyrukları işlevselliğine bakıyordum, ancak tamamlanmamış görünüyor.
2.1'den önce etc/queue.xml
, resmi belgelerde açıklandığı gibi bir yayıncı, konu, tüketici ve kuyruk tanımlamanıza izin veren makul bir işlevsel uygulama vardı : http://devdocs.magento.com/guides/v2.0/config-guide /mq/config-mq.html .
Yapılandırmada tanımlanan bir konuyla eşleşmedikçe, ciltleme oluşturamama gibi kısıtlamalar vardı; bu, tüm olası konu olasılıklarını önceden tanımlamanız gerektiği için esnekliği sınırladı. Yinelenen bir yükleme komut dosyasının olmaması, yükleyici komut dosyasının tekrar çalışmasını sağlamak için biraz hacklemeniz gerektiği anlamına geliyordu.
2.1 itibariyle yayıncı, konu, tüketici ve bağlama unsurları etc/queue.xml
kullanımdan kaldırılmıştır ve yapılandırma burada görüldüğü gibi etc/queue.xml
ve arasında bölünmüştür etc/communication.xml
: https://github.com/magento/magento2-samples/blob/master/sample- modül-örnek-ileti-kuyruğu / etc / . Kullanımdan kaldırılmış yayıncı / konu / tüketici / bağlama şeması yine de tek başına kullanılabilir, ancak gözden geçirilmiş aracı / kuyruk şeması ile birlikte kullanılamaz.
Ancak, bunların hiçbiri resmi belgelerde yer almamıştır ve yapılandırmanın neden bölündüğünü ve bazı durumlarda çoğaltma gerektirdiğini hemen netleştirmemiştir. Daha da önemlisi, konu başlığını yönlendirme anahtarı olarak kullanılan şimdi bağlamayı tanımlayacak bir olanak yok gibi görünüyor. Bu da ciltleme kuyrukları için özel karakterlerin kullanılmasını imkansız hale getirir. Bu yüzden yeniden düzenlenmiş ama işlevselliğini kaybetmiş gibi görünüyor.
Olumlu bir notta, magento/module-amqp
modül artık yinelenen bir yükleyici komut dosyası kullanır, böylece çalıştırdığınızda kuyruk yapılandırması değişiklikleri yüklenir magento setup:upgrade
. Bu değişiklik magento/module-mysql-mq
modüle henüz uygulanmamıştır .
Bu yüzden bilmek istiyorum: a) Bunların hepsini yanlış anladım ve aslında ciltler oluşturmanın bir yolu var ve göründüğünden daha esnek mi? b) Yapılandırma neden bölündü?
Bir yan not olarak, bunu denediğim için https://www.rabbitmq.com/tutorials/tutorial-four-php.html adresindeki RabbitMQ öğreticilerinden topoloji örneklerinden birini kullanıyorum :
Kullanımdan kaldırılan bu yapılandırma çoğunlukla topolojiye ulaştı:
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>
GÜNCELLEME: Doküman şimdi güncellendi. Joker karakterler artık desteklenmediğinden, bir konu değiş tokuşunun esnekliği geçersiz kılındı. Bu yüzden aşağıdaki doğrudan değişimi yeniden yaratmaya çalıştım:
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>
Ancak, tüketicileri çalıştırdığınızda, yalnızca "yeşil" konu tüketiciye yönlendirilirTwo, "siyah" konuyu yok sayar. Yani başarılabilecek en iyi şey, kuyruk ve tüketici başına sadece bir bağlayıcı ile doğrudan bir değişimdir.