becklyn/eventor-symfony

一个用于抽象发布/订阅操作的最简库(为 Symfony 适配)

安装次数: 1,244

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 3

分支: 0

开放问题: 0

类型:symfony-bundle

3.0.0 2022-09-20 08:12 UTC

This package is auto-updated.

Last update: 2024-09-20 12:08:55 UTC


README

🔮 一个用于抽象发布/订阅操作的最简库(为 Symfony 适配)

eventorclerk 的发布/订阅组件 😉

→ 原始的 Go 实现可以在 这里 找到

安装

composer require becklyn/eventor-symfony

支持的代理

eventor 内置了对以下代理的支持

使用方法

作为一个最简库,eventor 只提供了基础功能。其他功能取决于您的具体需求。

环境变量

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