itsoneiota/event-publisher

2.0.0 2018-07-10 09:26 UTC

This package is not auto-updated.

Last update: 2024-09-25 10:32:52 UTC


README

概述

一个PHP事件发布库,负责在多服务环境中发布用户定义的事件

安装

composer require itsoneiota/event-publisher

测试

./vendor/bin/phpunit

基本用法

构建器

有一个构建器辅助类来构建你的发布者。

构建Kinesis发布者

需要AWS SDK中的Kinesis客户端来构建具有AWS Kinesis传输器的发布者。

例如:

###示例用法 - 使用Kinesis客户端进行事件发布

####创建Kinesis客户端

$kinesis = new Aws\Kinesis\KinesisClient::factory(array('key'=>'KeY','secret'=>'seCrEt','region'=>'eu-west-1');

####使用构建器创建发布者

$serviceConfig = new \stdClass();
$serviceConfig->EventsPublisher = new \stdClass();
$serviceConfig->EventsPublisher->transport = new \stdClass();

$serviceConfig->EventsPublisher->enabled = true;
$serviceConfig->EventsPublisher->transport->type = 'Kinesis';
$serviceConfig->EventsPublisher->transport->stream = 'events-stream';

$publisherConfig = $publisherConfig->EventsPublisher;

$eventPublisherBuilder = EventPublisherBuilder::create()->withConfig($publisherConfig);

if($publisherConfig->transport->type == "Kinesis") {
    $eventPublisherBuilder->withKinesisTransporter($this->createKinesisClient(), $publisherConfig->transport);
}

$eventPublisher = $eventPublisherBuilder->build();

####创建事件对象

// Constructor1 is the event origin.
// Constructor2 is the message type, this should be a constant event type within the service.
// Constructor3 is an array of fields which can be defined in any way. consider which properties is relevant to the event.

const SERVICE_NAME = "WebFrontEnd";
const EVENT_USER_LOGGED_IN = "UserLoggedIn";

$event = new \itsoneiota\eventpublisher\Event(self::SERVICE_NAME,
                                                self::EVENT_USER_LOGGED_IN,
                                                array("some message"=>"user logged in after 3 attempts","attempts remaining"=>3)
                                              );

####发布事件

$eventPublisher->publish($event);