pnz/messenger-filesystem-transport

此包已被废弃,不再维护。未建议替代包。

Symfony Messenger 文件系统传输。

v0.1.3 2019-01-01 13:22 UTC

This package is auto-updated.

Last update: 2023-10-25 18:18:01 UTC


README

Latest Stable Version Total Downloads License Latest Unstable Version Build Status

扩展了 Symfony Messenger 组件以处理文件系统传输。队列通过从文件系统中存储和检索消息在本地处理。

队列实现为 LIFO(后进先出)列表,以优化文件系统使用和读写操作。

安装

composer require pnz/messenger-filesystem-transport

此传输处理 filesystem:// 协议,使用 FilesystemTransportFactory 创建传输。

Symfony 配置:使用 Filesystem Transport Bundle 包。

不使用 Symfony 包安装

  1. 注册传输工厂
#  config/services.yaml
Pnz\Messenger\FilesystemTransport\FilesystemTransportFactory:
    arguments:
        $serializer: '@messenger.transport.symfony_serializer'
        # The following lines are not needed if "autowire" is enabled
        $filesystem: '@filesystem'
        $lockFactory: '@lock.factory'
    # Enable the `filesystem://` transport to be auto-discovered, this is not needed when "autoconfigure" is enabled
    tags: ['messenger.transport_factory']
  1. 配置文件系统传输
#  config/packages/messenger.yaml
parameters:
  # The path *MUST* specify an absolute path of the directory where the queue will be stored
  # Example1: the queue messages will be stored in the project's `var/queue` directory
  env(MESSENGER_TRANSPORT_DSN): "filesystem://%kernel.project_dir%/var/queue"
  # Example2: use the `/tmp/queue` directory (note the triple `/`)
  env(MESSENGER_TRANSPORT_DSN): "filesystem:///tmp/queue"

framework:
    messenger:
        transports:
            filesystem: '%env(resolve:MESSENGER_TRANSPORT_DSN)%'

        routing:
            App\Message\MyMessage: filesystem

配置

DSN 包含以下查询参数

  • compress:启用/禁用消息存储的压缩(gzinflate/gzdeflate),使用 compress=true(默认:false)
  • loop_sleep:定义循环之间的睡眠间隔(微秒),使用 loop_sleep=MICRO-SECONDS(默认:500000)

示例

# .env

# Enable compression, and sleep for 0.8 seconds during loops if the queue is empty
MESSENGER_TRANSPORT_DSN="filesystem://%kernel.project_dir%/var/queue/default?compress=true&loop_sleep=800000"