Link Search Menu Expand Document

支持Enqueue

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


快速指南

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

安装

我们使用 composercotya/magento-composer-installer 插件来安装 magento-enqueue 扩展。

要安装该库,请在应用根目录中运行命令:

$ composer require "magento-hackathon/magento-composer-installer:~3.0"
$ composer require "enqueue/magento-enqueue:*@dev" "enqueue/amqp-ext"

注意:您不仅仅可以使用 AMQP 传输,还可以使用任何其他可用的传输

配置

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

Сonfiguration

发布消息

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

<?php

Mage::helper('enqueue')->send('a_topic', 'aMessage');

消息消费

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

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

use Interop\Queue\Context;
use Interop\Queue\Message;
use Interop\Queue\Processor;

class Acme_Module_Helper_Async_Foo implements Processor
{
    public function process(Message $message, Context $context)
    {
        // do job
        // $message->getBody() -> 'payload'

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

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

<!-- app/etc/local.xml -->

<config>
  <default>
    <enqueue>
      <processors>
        <foo-processor>
          <topic>a_topic</topic>
          <helper>acme/async_foo</helper>
        </foo-processor>
      </processors>
    </enqueue>
  </default>
</config>

并运行消息消费命令:

$ php shell/enqueue.php enqueue:consume -vvv --setup-broker

返回首页