Einrichten der Amazon-Nachrichtenwarteschlange
Ab Commerce 2.4.3 ist Amazon Message Queue (MQ) als Cloud-fähiger Ersatz für lokale Nachrichtenwarteschlangeninstanzen verfügbar.
Informationen zum Erstellen einer Nachrichtenwarteschlange in AWS finden Sie unter Einrichten von Amazon MQ in der AWS-Dokumentation.
Konfigurieren von Commerce für AWS MQ
Um eine Verbindung zum AWS MQ-Dienst herzustellen, konfigurieren Sie das Objekt queue.amqp
in der Datei env.php
.
AWS Message Queue erfordert eine SSL-/TLS-Verbindung.
'queue' => [
'amqp' => [
'host' => '[host]', //example: c-bf4kk1c5-5gcc-4b43-9b9e-8f5b54d234.mq.us-west-3.amazonaws.com
'port' => 5671,
'user' => 'yourusername',
'password' => 'yourpassword',
'virtualhost' => '/',
// AWS fields to add
'ssl' => 'true'
]
],
Dabei gilt:
host
—Die URL für den AMQP-Endpunkt, die durch Klicken auf den Brokernamen in AWS verfügbar ist (Entfernen Sie "https://"und die nachfolgende Portnummer)user
- Der Benutzername, der beim Erstellen des AWS MQ-Brokers eingegeben wurdepassword
- Der bei der Erstellung des AWS MQ-Brokers eingegebene Kennwortwert
Führen Sie nach dem Bearbeiten der Datei "env.php
"den folgenden Befehl aus, um das Setup abzuschließen:
bin/magento setup:upgrade
Verwendung des AWS MQ-Dienstes durch Commerce
Der Benutzer der Nachrichtenwarteschlange async.operations.all
verwendet die AMQP-Verbindung.
Dieser Kunde leitet jeden Themennamen, dem async
vorangestellt ist, über die AWS-MQ-Verbindung weiter.
In InventoryCatalog
gibt es beispielsweise Folgendes:
async.V1.inventory.bulk-product-source-assign.POST
async.V1.inventory.bulk-product-source-unassign.POST
async.V1.inventory.bulk-product-source-transfer.POST
Die Standardkonfiguration für InventoryCatalog
veröffentlicht keine Nachrichten in RabbitMQ. Das Standardverhalten besteht darin, die Aktion im selben Benutzer-Thread durchzuführen. Um InventoryCatalog
anzuweisen, Nachrichten zu veröffentlichen, aktivieren Sie cataloginventory/bulk_operations/async
. Wechseln Sie vom Administrator zu "Stores"> "Konfiguration"> "Katalog"> "Inventar"> "Admin-Massenvorgänge"und legen Sie Run asynchronously
auf "Ja"fest.
Nachrichtenwarteschlange testen
So testen Sie den Nachrichtenversand von Commerce an RabbitMQ:
-
Melden Sie sich bei der Web-Konsole RabbitMQ in AWS an, um Warteschlangen zu überwachen.
-
Erstellen Sie in Admin ein Produkt.
-
Erstellen Sie eine Inventarquelle.
-
Aktivieren Sie Stores > Konfiguration > Katalog > Bestand > Massen-Vorgänge für Administratoren > asynchron ausführen.
-
Navigieren Sie zu Katalog > Produkte. Wählen Sie im Raster das oben erstellte Produkt aus und klicken Sie auf Inventar Source zuweisen.
-
Klicken Sie auf Speichern und schließen , um den Vorgang abzuschließen.
In der Web-Konsole RabbitMQ sollten jetzt Meldungen angezeigt werden.
-
Starten Sie den Benutzer der Nachrichtenwarteschlange
async.operations.all
.code language-bash bin/magento queue:consumers:start async.operations.all
Die in der Warteschlange befindliche Nachricht sollte nun in der Web-Konsole RabbitMQ verarbeitet werden.
Stellen Sie sicher, dass sich die Inventarquellen für das Produkt in der Admin-Konsole geändert haben.