itsoneiota / event-publisher
PHP library to publish events
Installs: 20 997
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 0
Open Issues: 1
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: 2025-01-29 12:08:15 UTC
README
Overview
A PHP event publisher which is responsible for publishing user defined events within a multi service environment
Installation
composer require itsoneiota/event-publisher
Testing
./vendor/bin/phpunit
Basic Usage
Builder
There is a builder helper class to build your publisher.
Build Kinesis Publisher
A publisher with an AWS Kinesis transporter requires a Kinesis Client from the AWS SDK to build.
e.g.
###Example usage - Event publishing with a Kinesis Client
####Create Kinesis Client
$kinesis = new Aws\Kinesis\KinesisClient::factory(array('key'=>'KeY','secret'=>'seCrEt','region'=>'eu-west-1');
####Create Publisher using builder
$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();
####Create Event Object
// 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)
);
####Publish the Event
$eventPublisher->publish($event);