elefantlabs / public-events-bundle
此包最新版本(v2.0.0)没有可用的许可证信息。
v2.0.0
2018-01-29 13:07 UTC
Requires
- php: >=5.6
- symfony/dependency-injection: ^2.7 || ^3.0
- symfony/event-dispatcher: ^2.7 || ^3.0
- symfony/http-kernel: ^2.7 || ^3.0
- symfony/options-resolver: ^2.7 || ^3.0
- symfony/serializer: ^2.7 || ^3.0
Requires (Dev)
- guzzlehttp/guzzle: ^6.0
- php-amqplib/rabbitmq-bundle: ^1.12
- phpunit/phpunit: ^5.7
- satooshi/php-coveralls: ^1.0
README
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_consumer
和 old_sound_rabbit_mq.public_events_rabbit_test_producer
。
如果有重叠的过滤器,多个处理器可以处理相同的事件
过滤器
指定您要公开哪个事件。过滤器可以堆叠,并且第一个在 isPublic
上返回 true
的过滤器将标记事件为公开。目前有 name、class 和 custom 过滤器。
如果没有指定任何过滤器,处理器将处理 所有 事件。这相当于
filters: - {name: '/.*/'}
过滤器应实现 Elefant\PublicEventsBundle\PublicEvents\Filter\FilterInterface
。
格式化器
格式化器从事件生成数组,所有格式化器将按照定义的顺序调用,它们的结果将合并。