Magento 2 EE 2.1'deki ileti kuyruğu yapılandırma değişiklikleri


10

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.xmlkullanımdan kaldırılmıştır ve yapılandırma burada görüldüğü gibi etc/queue.xmlve 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-amqpmodü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-mqmodü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 :

resim açıklamasını buraya girin

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:

resim açıklamasını buraya girin

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.

Yanıtlar:


1

Teşekkürler @KHarper, güncellenmiş belgeler çok yardımcı olur. Ne yazık ki kuyruk yapılandırmasının esnekliğinin azaldığını onaylıyor.
philpot

Orijinal gönderiye sınırlı esnekliği ayrıntılandıran bir güncelleme ekledim, umarım doğrudan değişim topolojisini oluşturmanın bir yolu olup olmadığını önerebilirsiniz.
philpot

Ayrıca sadece 2.2'de tekrar değiştiğini bildirmek için. *
André Ferraz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.