<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
homedoctor-es / laravel-eventbridge-pubsub example snippets
return [
'messages_log_active' => false, //This param will allow you to log your messages
'message_log_db_connection' => null, //This params indicate if you will store this logs in an existent MongoDB connection(if the table does not exists in the connection, there is a migration to create the table)
'message_log_db_collection' => null, //The collection name
'message_log_db_expiration_minutes' => 43200, // TTL to expires the documents created in the database, 30 days default
'event_bridge_source' => null, // Mandatory field to indicates the name of the app which will consume and produce events
];
'connections' => [
'eventbridge' => [ //The connection name will be used as default eventbus
'driver' => 'eventbridge',
'region' => env('AWS_DEFAULT_REGION'),
'key' => env('AWS_ACCESS_KEY_ID'),
'endpoint' => env('AWS_URL'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'source' => env('AWS_EVENTBRIDGE_SOURCE'),
],
// ...
],
BROADCAST_DRIVER=eventbridge
use InteractsWithBroadcasting;
public function __construct()
{
$this->broadcastVia('eventbridge');
}
use App\Models\Order;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Broadcasting\InteractsWithBroadcasting;
use Illuminate\Queue\SerializesModels;
class OrderShipped implements ShouldBroadcast
{
use SerializesModels;
/**
* The order that was shipped.
*
* @var \App\Models\Order
*/
public $order;
/**
* Create a new event instance.
*
* @param \App\Models\Order $order
* @return void
*/
public function __construct(Order $order)
{
$this->order = $order;
$this->broadcastVia('eventbridge'); // If is not the default broadcaster driver
}
/**
* Get the topics that model events should broadcast on.
*
* @return array
*/
public function broadcastOn()
{
return ['orders']; // This is the Event bus name
}
}
/**
* Get and format the data to broadcast.
*
* @return array
*/
public function broadcastWith()
{
return [
'action' => 'parcel_handled',
'data' => [
'order-id' => $this->order->id,
'order-total' => $this->order->total,
],
];
}