artox-lab / clarc-message-bus-bundle
Artox Lab CLARC Bundle的消息总线适配器
v1.0.4
2021-06-28 12:00 UTC
Requires
- php: >=7.3
- ext-json: *
- artox-lab/abstract-bus-event-message: 1.0.0
- symfony/framework-bundle: ^5.0
- symfony/messenger: ^5.0
- symfony/validator: ^5.0
Requires (Dev)
- roave/security-advisories: dev-master
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