becklyn/eventor-symfony

A minimalistic library for abstracting pub/sub operations (ported for Symfony)

Maintainers

👁 becklyn

Package info

github.com/Becklyn/eventor-symfony

Type:symfony-bundle

pkg:composer/becklyn/eventor-symfony

Statistics

Installs: 1 248

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

3.0.0 2022-09-20 08:12 UTC

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

BSD-3-Clause 541b7c9c532e022c39e8e66a29f25d59140aae6c

  • Samuel Oechsler <so.woop@becklyn.com>

This package is auto-updated.

Last update: 2026-06-20 16:15:18 UTC


README

🔮 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

Installation

composer require becklyn/eventor-symfony

Supported brokers

eventor has builtin support for the following brokers:

Usage

Being a minimalistic library, eventor only provides you with the basics. The rest is up to your specific need.

Env variables

DAPR_HOST=http://localhost:3500 # Default: (null)
DAPR_PUBSUB=pubsubname # Default: (null)

Publish

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",
 ));
 }
}

Subscribe

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);
 }
}