1. Go to this page and download the library: Download geekcell/kafka-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
geekcell / kafka-bundle example snippets
use GeekCell\KafkaBundle\Record;
use FlixTech\AvroSerializer\Objects\Schema;
class OrderDto extends Record
{
public int $id;
public int $productId;
public int $customerId;
public int $quantity;
public float $total;
public string $status = 'PENDING';
public function getKey(): ?string
{
// Nullable; if provided it will be used as message key
// to preserve message ordering.
return sprintf('order_%s', $this->id);
}
protected function withFields(RecordType $root): Schema
{
// See for examples:
// https://github.com/flix-tech/avro-serde-php/tree/master/test/Objects/Schema
$root
->field('id', Schema::int())
->field('productId', Schema::int())
->field('customerId', Schema::int())
->field('quantity', Schema::int())
->field('total', Schema::float())
->field(
'status',
Schema::enum()
->name('OrderStatusEnum')
->symbols(...['PENDING', 'PAID', 'SHIPPED', 'CANCELLED'])
->default('PENDING'),
);
return $root;
}
}
use GeekCell\KafkaBundle\Contracts\Event;
class OrderPlacedEvent implements Event
{
public function __construct(
private OrderDto $orderDto,
) {
}
public function getSubject(): Record
{
return $this->orderDto;
}
}