PHPackages                             oniva/jobqueue-azurequeuestorage - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Queues &amp; Workers](/categories/queues)
4. /
5. oniva/jobqueue-azurequeuestorage

ActiveNeos-package[Queues &amp; Workers](/categories/queues)

oniva/jobqueue-azurequeuestorage
================================

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

0.2.0(2mo ago)10[1 issues](https://github.com/onivaevents/Oniva.JobQueue.AzureQueueStorage/issues)MITPHPPHP &gt;=8.1CI passing

Since May 28Pushed 2mo agoCompare

[ Source](https://github.com/onivaevents/Oniva.JobQueue.AzureQueueStorage)[ Packagist](https://packagist.org/packages/oniva/jobqueue-azurequeuestorage)[ RSS](/packages/oniva-jobqueue-azurequeuestorage/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (4)Dependencies (9)Versions (7)Used By (0)

Oniva.JobQueue.AzureQueueStorage
================================

[](#onivajobqueueazurequeuestorage)

A job queue backend for the [Flowpack.JobQueue.Common](https://github.com/Flowpack/jobqueue-common) package based on [Azure Queue Storage](https://learn.microsoft.com/en-us/azure/storage/queues/storage-queues-introduction).

Features
--------

[](#features)

- Azure Queue Storage Integration - Built on Azure's reliable queue service
- Claim Check Pattern - Automatically stores large job payloads (&gt;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
------------

[](#installation)

```
composer require oniva/jobqueue-azurequeuestorage
```

Configuration
-------------

[](#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
-----------------

[](#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
------------

[](#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
-------

[](#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.

###  Health Score

30

—

LowBetter than 65% of packages

Maintenance65

Regular maintenance activity

Popularity2

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity40

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 94.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~90 days

Total

4

Last Release

75d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/046c3b571b3c6a71006fd4801b46a8f827719302072db50114959ccd8f71821d?d=identicon)[oniva](/maintainers/oniva)

---

Top Contributors

[![booooza](https://avatars.githubusercontent.com/u/18515653?v=4)](https://github.com/booooza "booooza (16 commits)")[![simstern](https://avatars.githubusercontent.com/u/2580285?v=4)](https://github.com/simstern "simstern (1 commits)")

---

Tags

azureazure-storageflowframeworkneoscms

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/oniva-jobqueue-azurequeuestorage/health.svg)

```
[![Health](https://phpackages.com/badges/oniva-jobqueue-azurequeuestorage/health.svg)](https://phpackages.com/packages/oniva-jobqueue-azurequeuestorage)
```

###  Alternatives

[league/geotools

Geo-related tools PHP 7.3+ library

1.4k5.3M26](/packages/league-geotools)[amphp/parser

A generator parser to make streaming parsers simple.

14952.8M16](/packages/amphp-parser)[amphp/serialization

Serialization tools for IPC and data storage in PHP.

13451.1M18](/packages/amphp-serialization)[react/async

Async utilities and fibers for ReactPHP

2238.8M170](/packages/react-async)[amphp/pipeline

Asynchronous iterators and operators.

7432.7M34](/packages/amphp-pipeline)[react/promise-stream

The missing link between Promise-land and Stream-land for ReactPHP

11512.9M45](/packages/react-promise-stream)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
