itsoneiota / event-publisher
PHP事件发布库
2.0.0
2018-07-10 09:26 UTC
Requires
- aws/aws-sdk-php: 3.62.*
- darkflib/php-statsd: dev-master
- php-amqplib/php-amqplib: ^2.6
Requires (Dev)
- phpunit/phpunit: 3.7.*
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);