Link Search Menu Expand Document

支持Enqueue

Enqueue 是一个 MIT 许可的开源项目,它的持续开发完全得益于社区和我们客户的支持。如果您想加入他们,请考虑:


Magento2 EnqueueModule

本模块将 Enqueue Client 与 Magento2 集成在一起。您可以向不同的消息队列发送和消费消息,例如 RabbitMQ、AMQP、STOMP、Amazon SQS、Kafka、Redis、Google PubSub、Gearman、Beanstalk、Google PubSub 等。或者通过 Message Bus 将 Magento2 应用与其他应用或服务集成。 Magento1 也有一个模块

安装

我们推荐使用 composer 来安装 magento2-enqueue 模块。 要安装该库,请在应用根目录中运行命令:

$ composer require "enqueue/magento2-enqueue:*@dev" "enqueue/amqp-ext"

运行 setup:upgrade,以便 Magento2 选择已安装的模块。

$ php bin/magento setup:upgrade

配置

在这个阶段,我们已经在 Magento 后端配置了 Enqueue 扩展。 配置在这里:System -> Configuration -> Enqueue Message Queue。 这是连接到本地主机上的 RabbitMQ 代理的 Amqp 传输示例:

Сonfiguration

发布消息

要发送消息,您必须采用 enqueue 辅助并调用 send 方法。

<?php

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$enqueueManager = $objectManager->create('Enqueue\Magento2\Model\EnqueueManager');
$enqueueManager->sendEvent('a_topic', 'aMessage');

// 或者一个可能有答复的命令
$reply = $enqueueManager->sendCommand('a_topic', 'aMessage', true);

$replyMessage = $reply->receive(5000); // wait for 5 sec

消息消费

我假设您已正确创建、配置和注册了 acme Magento 模块。 要消费消息,您必须首先定义一个处理器类:

<?php
// app/code/Acme/Module/Helper/Async/Foo.php

namespace Acme\Module\Helper\Async;

use Interop\Queue\PsrContext;
use Interop\Queue\PsrMessage;
use Interop\Queue\PsrProcessor;

class Foo implements Processor
{
    public function process(PsrMessage $message, PsrContext $context)
    {
        // do job
        // $message->getBody() -> 'payload'

        return self::ACK;         // acknowledge message
        // return self::REJECT;   // reject message
        // return self::REQUEUE;  // requeue message
    }
}

然后订阅一个主题或几个主题:

<!-- app/code/Acme/Module/etc/config.xml -->

<config>
  <default>
    <enqueue>
      <processors>
        <foo-processor>
          <topic>a_topic</topic>
          <helper>Acme\Module\Helper\Async\foo</helper>
        </foo-processor>
      </processors>
    </enqueue>
  </default>
</config>

并运行消息消费命令:

$ php bin/magento enqueue:consume -vvv --setup-broker

返回首页