Event Sourcing
Handling Event Sourcing with ease
Introduction
For detailed information about the Event Sourcing pattern, click here
TL;DR:
Storing your Entity (eg Order) in a stream of Events, append-only.
Great source for:
Debugging production issues
Analytical reasons
Usage
Event Sourcing of ShipSaaS is utilizing Laravel's Event feature. So with a single Event::dispatch(...)
will do the job.
EventSourcingContract
You need to create an Event class, indeed. And your Event class must implement the EventSourcingContract
Implements the required methods and that's it.
Required methods | Return Type | Description |
---|---|---|
|
| The model that you want to record the event. Eg: |
|
| The current logged in User that's interacting with the main Model. |
|
| Category of the event, eg: |
|
| The related data of the Event that you want to store, eg for |
Dispatch the Event
Use Laravel Event Facade or EventManager:
After dispatched, you would see a new record in the events
table. Check it out!
Queue
If you wish to run the record under Queue's stage, no worries. Update these settings:
saas-ready.php
event-sourcing.should-queue
totrue
event-sourcing.queue-name
if you want to push it to a specific queuedefault: will use the default queue name of the driver  
event-sourcing.queue-connection
if you want to push it to a specific connection, egredis
default: will use the default queue driver from env
Relationship for Event
If you want to use our default Event
eloquent (and you should) and do the eager-loading, then you need to configure the user
relationship for it, via:
saas-ready.php
event-sourcing.user-model
egApp\Models\User
Alternatively, you can create a new Event
model and extend our Event
class, then override the user
method.
Last updated