elefantlabs/public-events-bundle

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

安装: 2,461

依赖项: 0

建议者: 0

安全性: 0

星标: 6

关注者: 2

分支: 6

开放问题: 1

类型:symfony-bundle

v2.0.0 2018-01-29 13:07 UTC

This package is not auto-updated.

Last update: 2020-11-13 22:28:56 UTC


README

Build Status Coverage Status

PublicEventsBundle 帮助您将 Symfony 事件转换为公共事件。通过记录、调用 API、发布到 AMQP 交换机等方式使事件公开。

安装

composer require elefantlabs/public-events-bundle

添加到 AppKernel.php

public function registerBundles()
{
    $bundles = array(
        //...
        new Elefant\PublicEventsBundle\ElefantPublicEventsBundle(),
        //...
    );
}

配置参考

elefant_public_events:
    formatters: [metadata, formatter2] #or a service id for a custom formatter
    enabled: #default true
    trace: #default false, if enabled, 'event_source' is set for PublicEvent (uses debug_backtrace)
    handlers:
        logger_test: #You need a logger service
            type: logger
            filters:
                - {name: regex}
                - {class: MyEventType}
                - my_custom_filter # the service Id of your custom filter.
            formatters: [formatter1, formatter2] # the service Id of your custom formatter.
        guzzle_test: #You need a GuzzleClient service
            type: guzzle
            config:
                client: 'guzzle_client' #Guzzle client service ID
                method: test_method #Http method, default: get
                uri: /test_uri #default: /
                headers: ['extra headers'] #default: []
        rabbit_test: #You need rabbitmq bundle
             type: rabbitmq
             config:
                 connection: default# default: default
                 exchange_options: {}
                 queue_options: {}
                 callback: 'your_bundle.service_definition' #must implement ConsumerInterface
                 idle_timeout: #default null
                 idle_timeout_exit_code: #default null
您可以选择如何使事件公开 您可以选择哪些事件要公开 以及附加哪些数据
您定义一个处理器 您定义过滤器 您定义格式化器

处理器

处理器处理公共事件。支持的处理器

  • LoggerHandler 使用 Monolog(支持 psr-log LoggerInterface
  • GuzzleHandler 使用 Guzzle
  • RabbitmqHandler 使用 RabbitMqBundle
  • 自定义处理器应实现 Elefant\PublicEventsBundle\PublicEvents\Handler\HandlerInterface

RabbitmqHandler 将为每个 rabbitmq 类型的处理器自动创建一个消费者和一个生产者

对于 rabbit_test 处理器,将创建 old_sound_rabbit_mq.public_events_rabbit_test_consumerold_sound_rabbit_mq.public_events_rabbit_test_producer

如果有重叠的过滤器,多个处理器可以处理相同的事件

过滤器

指定您要公开哪个事件。过滤器可以堆叠,并且第一个在 isPublic 上返回 true 的过滤器将标记事件为公开。目前有 nameclasscustom 过滤器。

如果没有指定任何过滤器,处理器将处理 所有 事件。这相当于

filters:
    - {name: '/.*/'}

过滤器应实现 Elefant\PublicEventsBundle\PublicEvents\Filter\FilterInterface

格式化器

格式化器从事件生成数组,所有格式化器将按照定义的顺序调用,它们的结果将合并。