vadiktok/rabbitmq-elastica-bundle

此包的最新版本(3.0)没有可用的许可证信息。

3.0 2020-02-28 10:53 UTC

This package is auto-updated.

Last update: 2024-09-28 20:55:44 UTC


README

你可能知道,Elastica的填充命令非常慢且不稳定。

此捆绑包提供了一种简单的功能,使用RabbitMQ捆绑包通过Elastica索引填充。

灵感来源于Enqueue Elastica Bundle

安装

$ composer require vadiktok/rabbitmq-elastica-bundle
  1. 然后,在项目的app/AppKernel.php文件中添加以下行以启用捆绑包
<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new Vadiktok\RabbitMQElasticaBundle\VadiktokRabbitMQElasticaBundle(),
        );

        // ...
    }
}
  1. 在您的app/config.yml文件中定义RabbitMQ生产者和消费者
old_sound_rabbit_mq:
    producers:
        vadiktok_elastica:
            connection: default
            exchange_options: { name: elastica, type: direct }
            queue_options:    { name: elastica }
    consumers:
        vadiktok_elastica:
            connection: default
            exchange_options: { name: elastica, type: direct }
            queue_options:    { name: elastica }
            callback: vadiktok.rabbitmq.elastica.consumer

用法

  1. 使用--pager-persister选项设置为"rabbitmq"运行elastica populate命令
$ php bin/console fos:elastica:populate --pager-persister=rabbitmq

您可能还想使用--max-per-page选项。默认情况下,它设置为100,在我的情况下,20k运行得非常好。

此命令简单地创建具有页数、结果数量和索引名称/类型的MQ消息。消费者负责从Elasticsearch服务器检索结果并推送它们。

一页等于队列中的一条消息。所以如果您有100万条记录,并将--max-per-page设置为10k,则将发布100条消息。

  1. 使用以下方法消费您的消息
$ php bin/console rabbitmq:consume vadiktok_elastica -vvv

您运行的消费者越多,您的索引填充速度就越快。根据我的经验,合理的消费者数量为5到10。

我还建议使用SupervisorD

配置

默认情况下,捆绑包将查看生产者并将所有消息发布到它。但您也可以修改该名称。在这种情况下,只需将此添加到您的config.yml文件中即可

vadiktok_rabbit_mq_elastica:
    producers:
        your_producer_id: ~

或者更多。想象一下,您想将索引分割到不同的队列中。您只需像在安装部分描述的那样定义您的消费者/生产者,然后告诉捆绑包使用哪个生产者即可

vadiktok_rabbit_mq_elastica:
    producers:
        your_producer_id_1: [index_name_1, index_name_2]
        your_producer_id_2: [index_name_3, index_name_4]

现在想象一下,您需要首先获取新数据,而不是等待从第一条记录开始索引数据。您只需添加"order"参数即可

vadiktok_rabbit_mq_elastica:
    order: DESC