artox-lab/clarc-message-bus-bundle

Artox Lab CLARC Bundle的消息总线适配器

v1.0.4 2021-06-28 12:00 UTC

This package is auto-updated.

Last update: 2024-09-28 19:09:50 UTC


README

安装

使用Symfony Flex的应用程序

打开命令行,进入您的项目目录并执行

$ composer require artox-lab/clarc-message-bus-bundle

不使用Symfony Flex的应用程序

步骤 1: 下载Bundle

打开命令行,进入您的项目目录并执行以下命令以下载此Bundle的最新稳定版本

$ composer require artox-lab/clarc-message-bus-bundle

此命令要求您全局安装Composer,具体请参阅Composer文档中的安装章节

步骤 2: 启用Bundle

然后,将Bundle添加到项目config/bundles.php文件中已注册的Bundle列表中,以启用Bundle

// config/bundles.php

return [
    // ...
    ArtoxLab\Bundle\ClarcMessageBusBundle\ArtoxLabClarcMessageBusBundle::class => ['all' => true],
];

步骤 3: 配置

配置Bundle

# config/packages/artox_lab_clarc_message_bus.yaml

artox_lab_clarc_message_bus:
    bus:
        middleware:
            add_redelivery_stamp_middleware:
                retry_count: 10

用法

步骤 1: 根据abstract-bus-event-message创建您的event lib

通过composer将event lib添加到项目中

步骤 2: 在容器中配置服务

Bundle使用abstract-bus-event-message作为依赖项。您需要为接口配置服务

# config/services.yaml

app_message_bus.producer.bus_event_message_factory:
    class: YourLib\BusEventMessage\V1\BusMessageFactory

ArtoxLab\AbstractBusEventMessage\V1\BusMessageFactoryInterface: '@app_message_bus.producer.bus_event_message_factory'

app_message_bus.producer.bus_event_message:
    class: YourLib\BusEventMessage\V1\BusMessage

ArtoxLab\AbstractBusEventMessage\V1\BusMessageInterface: '@app_message_bus.producer.bus_event_message'

app_message_bus.producer.bus_event:
    class: YourLib\BusEventMessage\V1\Events\BaseEvent

ArtoxLab\AbstractBusEventMessage\V1\Events\EventInterface: '@app_message_bus.producer.bus_event'

步骤 3: 配置symfony/messenger

# config/packages/messenger.yaml

framework:
    messenger:
        buses:
            message.bus:
                middleware:
                    - validation
                    - artox_lab_clarc_message_bus.middleware.add_redelivery_stamp_middleware

        transports:
            example:
                dsn: "%env(RABBITMQ_TRANSPORT_DSN)%"
                serializer: artox_lab_clarc_message_bus.transport.bus_serializer
                retry_strategy:
                    delay: 10000
                    max_retries: 10
                    multiplier: 1
                options:
                    exchange:
                        name: "events.example"
                        type: "topic"
                        flags: 4
                    queues:
                        events:
                            binding_keys: [ '#' ]

        routing:
            'YourLib\BusEventMessage\V1\Events\ExampleEvent': [ example ]

交换类型 "topic"

如果交换类型为 "topic",则symfony不会自动创建队列。配置RabbitMqBundle

# config/packages/old_sound_rabbit_mq.yaml

old_sound_rabbit_mq:
    connections:
        default:
            url: '%env(RABBITMQ_TRANSPORT_DSN)%'

    producers:
        example:
            connection: default
            exchange_options: { name: 'events.example', type: topic, auto_delete: true, durable: true }
            service_alias: example

打开命令行,进入您的项目目录并执行以下命令以创建队列并设置传输

$ php bin/console rabbitmq:setup-fabric
$ php bin/console messenger:setup-transports

示例