becklyn/eventor-symfony
Minimal pub/sub abstraction for Symfony, with built-in support for Dapr’s Pub/Sub API. Configure via env vars and publish typed messages to topics, then register handlers and expose simple subscription and topic endpoints through a controller/registry.
🔮 A minimalistic library for abstracting pub/sub operations (ported for Symfony)
→ eventor is clerk for pub/sub 😉
→ the original Go implementation can be found here
composer require becklyn/eventor-symfony
eventor has builtin support for the following brokers:
Being a minimalistic library, eventor only provides you with the basics. The rest is up to your specific need.
DAPR_HOST=http://localhost:3500 # Default: (null)
DAPR_PUBSUB=pubsubname # Default: (null)
class Message
{
public function __construct(
private readonly string $id,
private readonly string $body,
) {}
public function id(): string
{
return $this->id;
}
public function body(): string
{
return $this->body;
}
}
class PublishExample
{
public function __construct(
private readonly Publisher $publisher,
) {
$this->publisher->publish("topic", new Message(
id: "0",
body: "Hello World",
));
}
}
class DaprSubscriptionController extends AbstractController
{
public function __construct(
private readonly DaprSubscriptionRegistry $subscriptionRegistry,
) {
new On(
fn (Message $msg) => echo($msg),
$this->$subscriber,
"topic",
);
}
#[Route('/dapr/subscribe', methods: [Request::METHOD_GET])]
public function handleSubscribe() : Response
{
return $this->subscriptionRegistry->handleSubscribe();
}
#[Route('/dapr/pubsubname/topic', methods: [Request::METHOD_POST])]
public function handleTopic(Request $request): Response
{
return $this->subscriptionRegistry->handleTopic($request);
}
}
How can I help you explore Laravel packages today?