承接 oniva/jobqueue-azurequeuestorage 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

oniva/jobqueue-azurequeuestorage

最新稳定版本:0.2.0

Composer 安装命令:

composer require oniva/jobqueue-azurequeuestorage

包简介

A Flowpack.JobQueue.Common implementation to support Azure Queue Storage as backend

README 文档

README

A job queue backend for the Flowpack.JobQueue.Common package based on Azure Queue Storage.

Features

  • Azure Queue Storage Integration - Built on Azure's reliable queue service
  • Claim Check Pattern - Automatically stores large job payloads (>32KB) in Azure Blob Storage to bypass queue message size limits
  • Priority Queue - Optionally use a separate queue for high-priority jobs that will always be processed first
  • Poison Queue - Optionally move failed jobs to a dead-letter queue for debugging and manual intervention
  • Configurable Options - Customize timeouts, polling intervals, and more via settings

Installation

composer require oniva/jobqueue-azurequeuestorage

Configuration

Add the following to your Flow application's Settings.yaml:

Flowpack:
  JobQueue:
    Common:
      queues:
        'my-azure-storage-queue':
          className: 'Oniva\JobQueue\AzureQueueStorage\Queue\AzureQueueStorage'
          options:
            connectionString: DefaultEndpointsProtocol=https;AccountName=myaccountname;AccountKey=myaccountkey;EndpointSuffix=core.windows.net

Full example configuration with all options:

Flowpack:
  JobQueue:
    Common:
      queues:
        'my-azure-storage-queue':
          className: 'Oniva\JobQueue\AzureQueueStorage\Queue\AzureQueueStorage'
          maximumNumberOfReleases: 3
          executeIsolated: true
          options:
            connectionString: DefaultEndpointsProtocol=https;AccountName=myaccountname;AccountKey=myaccountkey;EndpointSuffix=core.windows.net
            defaultTimeout: 30 # Default polling timeout in seconds (how long to wait for a message)
            visibilityTimeout: 300 # Default visibility timeout in seconds (how long message stays hidden during processing), note that this must exceed the maximum expected job duration
            claimCheckThreshold: 32768 # Message size threshold for claim check pattern (in bytes)
            defaultTtl: 604800 # Default message TTL in seconds (7 days max for Azure Storage Queue)
            pollingInterval: 1000 # Polling interval in milliseconds
            blobContainer: jobqueue-blobs # Blob container name for claim check messages
            usePriorityQueue: true # Enable priority queueing
            usePoisonQueue: true # Enable poison queue for failed jobs
            preservePoisonPayload: true # Preserve the original payload for failed jobs in the poison queue
            prioritySuffix: '-priority' # Suffix for priority queue
            poisonSuffix: '-poison' # Suffix for poison queue

Priority Queueing

To enable priority queueing, set usePriorityQueue to true. This allows you to submit high-priority jobs that will be processed before regular jobs.

$queue->submit($payload, ['priority' => true]);

Poison Queue

To enable the poison queue, set usePoisonQueue to true. Failed jobs (those that exceed maximumNumberOfReleases) are automatically moved to a dead-letter queue for inspection.

By default, only metadata is stored in the poison queue. To preserve the original payload for retry or debugging, also set preservePoisonPayload: true.

To retry failed jobs, run a worker directly against the poison queue:

./flow flowpack.jobqueue.common:job:work my-azure-storage-queue-poison

Note: jobs being processed from the poison queue will not be re-poisoned on failure — they are left visible in the queue for manual inspection instead.

Caveats

  • 7-day message limit - Azure Queue Storage automatically deletes messages after 7 days maximum, even if unprocessed
  • 64KB queue message size - While the claim check pattern handles larger payloads, it adds latency and blob storage costs
  • No native queue priorities - Priority queues are simulated by polling multiple queues, which increases API calls
  • Approximate counts only - Queue metrics like countReady() are estimates, not exact counts, due to Azure's distributed nature
  • No message ordering guarantee - Azure Queue Storage doesn't guarantee FIFO ordering, messages may be processed out of sequence
  • Poison queue retry is manual - Failed jobs are moved to a dead-letter queue but not automatically retried.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-05-30

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固