Cloudflare changelogs | QueuesCloudflare changelogs for Queueshttps://developers.cloudflare.com/changelog/Queues - Subscribe to events from Cloudflare services with Queueshttps://developers.cloudflare.com/changelog/2025-08-19-event-subscriptions/https://developers.cloudflare.com/changelog/2025-08-19-event-subscriptions/<p>You can now subscribe to events from other Cloudflare services (for example, <a href="https://developers.cloudflare.com/kv/">Workers KV</a>, <a href="https://developers.cloudflare.com/workers-ai">Workers AI</a>, <a href="https://developers.cloudflare.com/workers">Workers</a>) and consume those events via <a href="https://developers.cloudflare.com/queues/">Queues</a>, allowing you to build custom workflows, integrations, and logic in response to account activity.</p> <starlight-image-zoom-zoomable><img src="https://developers.cloudflare.com/_astro/queues-event-subscriptions.3aVidnXJ_1iozIn.webp" alt="Event subscriptions architecture"></starlight-image-zoom-zoomable> <p>Event subscriptions allow you to receive messages when events occur across your Cloudflare account. Cloudflare products can publish structured events to a queue, which you can then consume with <a href="https://developers.cloudflare.com/workers/">Workers</a> or <a href="https://developers.cloudflare.com/queues/configuration/pull-consumers/">pull via HTTP from anywhere</a>.</p> <p>To create a subscription, use the dashboard or <a href="https://developers.cloudflare.com/workers/wrangler/commands/#subscription-create">Wrangler</a>:</p> <div><figure><pre data-language="bash"><code class="language-bash"><div><div><span>npx</span><span> </span><span>wrangler</span><span> </span><span>queues</span><span> </span><span>subscription</span><span> </span><span>create</span><span> </span><span>my-queue</span><span> </span><span>--source</span><span> </span><span>r2</span><span> </span><span>--events</span><span> </span><span>bucket.created</span></div></div></code></pre><div></div></figure></div> <p>An event is a structured record of something happening in your Cloudflare account – like a Workers AI batch request being queued, a Worker build completing, or an R2 bucket being created. Events follow a consistent structure:</p> <div><figure><pre data-language="json"><code class="language-json"><div><div><span>{</span></div></div><div><div><span> </span><span>"</span><span>type</span><span>"</span><span>:</span><span> </span><span>"cf.r2.bucket.created"</span><span>,</span></div></div><div><div><span> </span><span>"</span><span>source</span><span>"</span><span>:</span><span> </span><span>{</span></div></div><div><div><span> </span><span>"</span><span>type</span><span>"</span><span>:</span><span> </span><span>"r2"</span></div></div><div><div><span> </span><span>},</span></div></div><div><div><span> </span><span>"</span><span>payload</span><span>"</span><span>:</span><span> </span><span>{</span></div></div><div><div><span> </span><span>"</span><span>name</span><span>"</span><span>:</span><span> </span><span>"my-bucket"</span><span>,</span></div></div><div><div><span> </span><span>"</span><span>location</span><span>"</span><span>:</span><span> </span><span>"WNAM"</span></div></div><div><div><span> </span><span>},</span></div></div><div><div><span> </span><span>"</span><span>metadata</span><span>"</span><span>:</span><span> </span><span>{</span></div></div><div><div><span> </span><span>"</span><span>accountId</span><span>"</span><span>:</span><span> </span><span>"f9f79265f388666de8122cfb508d7776"</span><span>,</span></div></div><div><div><span> </span><span>"</span><span>eventTimestamp</span><span>"</span><span>:</span><span> </span><span>"2025-07-28T10:30:00Z"</span></div></div><div><div><span> </span><span>}</span></div></div><div><div><span>}</span></div></div></code></pre><div></div></figure></div> <p>Current <a href="https://developers.cloudflare.com/queues/event-subscriptions/events-schemas/">event sources</a> include <a href="https://developers.cloudflare.com/r2/">R2</a>, <a href="https://developers.cloudflare.com/kv/">Workers KV</a>, <a href="https://developers.cloudflare.com/workers-ai/">Workers AI</a>, <a href="https://developers.cloudflare.com/workers/ci-cd/builds/">Workers Builds</a>, <a href="https://developers.cloudflare.com/vectorize/">Vectorize</a>, <a href="https://developers.cloudflare.com/r2/data-migration/super-slurper/">Super Slurper</a>, and <a href="https://developers.cloudflare.com/workflows/">Workflows</a>. More sources and events are on the way.</p> <p>For more information on event subscriptions, available events, and how to get started, refer to our <a href="https://developers.cloudflare.com/queues/event-subscriptions/">documentation</a>.</p>Tue, 19 Aug 2025 12:00:00 GMTQueuesQueuesQueues - Publish messages to Queues directly via HTTPhttps://developers.cloudflare.com/changelog/2025-05-09-publish-to-queues-via-http/https://developers.cloudflare.com/changelog/2025-05-09-publish-to-queues-via-http/<p>You can now publish messages to <a href="https://developers.cloudflare.com/queues/">Cloudflare Queues</a> directly via HTTP from any service or programming language that supports sending HTTP requests. Previously, publishing to queues was only possible from within <a href="https://developers.cloudflare.com/workers/">Cloudflare Workers</a>. You can already consume from queues via Workers or <a href="https://developers.cloudflare.com/queues/configuration/pull-consumers/">HTTP pull consumers</a>, and now publishing is just as flexible.</p> <p>Publishing via HTTP requires a <a href="https://developers.cloudflare.com/fundamentals/api/get-started/create-token/">Cloudflare API token</a> with <code>Queues Edit</code> permissions for authentication. Here's a simple example:</p> <div><figure><pre data-language="bash"><code class="language-bash"><div><div><span>curl</span><span> </span><span>"https://api.cloudflare.com/client/v4/accounts/&#x3C;account_id>/queues/&#x3C;queue_id>/messages"</span><span> </span><span>\</span></div></div><div><div><span> </span><span>-X</span><span> </span><span>POST</span><span> </span><span>\</span></div></div><div><div><span> </span><span>-H</span><span> </span><span>'Authorization: Bearer &#x3C;api_token>'</span><span> </span><span>\</span></div></div><div><div><span> </span><span>--data</span><span> </span><span>'{ "body": { "greeting": "hello", "timestamp": "2025-07-24T12:00:00Z"} }'</span></div></div></code></pre><div></div></figure></div> <p>You can also use our <a href="https://developers.cloudflare.com/fundamentals/api/reference/sdks/">SDKs</a> for TypeScript, Python, and Go.</p> <p>To get started with HTTP publishing, check out our <a href="https://developers.cloudflare.com/queues/examples/publish-to-a-queue-via-http/">step-by-step example</a> and the full API documentation in our <a href="https://developers.cloudflare.com/api/resources/queues/subresources/messages/methods/push/">API reference</a>.</p>Fri, 09 May 2025 12:00:00 GMTQueuesQueuesQueues - Increased limits for Queues pull consumershttps://developers.cloudflare.com/changelog/2025-04-17-pull-consumer-limits/https://developers.cloudflare.com/changelog/2025-04-17-pull-consumer-limits/<p><a href="https://developers.cloudflare.com/queues/configuration/pull-consumers/">Queues pull consumers</a> can now pull and acknowledge up to <strong>5,000 messages / second per queue</strong>. Previously, pull consumers were rate limited to 1,200 requests / 5 minutes, aggregated across all queues.</p> <p>Pull consumers allow you to consume messages over HTTP from any environment—including outside of <a href="https://developers.cloudflare.com/workers">Cloudflare Workers</a>. They’re also useful when you need fine-grained control over how quickly messages are consumed.</p> <p>To setup a new queue with a pull based consumer using <a href="https://developers.cloudflare.com/workers/wrangler/">Wrangler</a>, run:</p> <div><figure><pre data-language="sh"><code class="language-sh"><div><div><span>npx</span><span> </span><span>wrangler</span><span> </span><span>queues</span><span> </span><span>create</span><span> </span><span>my-queue</span></div></div><div><div><span>npx</span><span> </span><span>wrangler</span><span> </span><span>queues</span><span> </span><span>consumer</span><span> </span><span>http</span><span> </span><span>add</span><span> </span><span>my-queue</span></div></div></code></pre><div></div></figure></div> <p>You can also configure a pull consumer using the <a href="https://developers.cloudflare.com/api/resources/queues/subresources/consumers/methods/create/">REST API</a> or the Queues dashboard.</p> <p>Once configured, you can pull messages from the queue using any HTTP client. You'll need a <a href="https://developers.cloudflare.com/fundamentals/api/get-started/create-token/">Cloudflare API Token</a> with <code>queues_read</code> and <code>queues_write</code> permissions. For example:</p> <div><figure><pre data-language="bash"><code class="language-bash"><div><div><span>curl</span><span> </span><span>"https://api.cloudflare.com/client/v4/accounts/</span><span>${</span><span>CF_ACCOUNT_ID</span><span>}</span><span>/queues/</span><span>${</span><span>QUEUE_ID</span><span>}</span><span>/messages/pull"</span><span> </span><span>\</span></div></div><div><div><span>--header </span><span>"Authorization: Bearer </span><span>${</span><span>API_TOKEN</span><span>}</span><span>"</span><span> </span><span>\</span></div></div><div><div><span>--header </span><span>"Content-Type: application/json"</span><span> </span><span>\</span></div></div><div><div><span>--data </span><span>'{ "visibility_timeout": 10000, "batch_size": 2 }'</span></div></div></code></pre><div></div></figure></div> <p>To learn more about how to acknowledge messages, pull batches at once, and setup multiple consumers, refer to the <a href="https://developers.cloudflare.com/queues/configuration/pull-consumers">pull consumer documentation</a>.</p> <p>As always, Queues doesn't charge for data egress. Pull operations continue to be billed at the <a href="https://developers.cloudflare.com/queues/platform/pricing">existing rate</a>, of $0.40 / million operations. The increased limits are available now, on all new and existing queues. If you're new to Queues, <a href="https://developers.cloudflare.com/queues/get-started">get started with the Cloudflare Queues guide</a>.</p>Thu, 17 Apr 2025 12:00:00 GMTQueuesQueuesQueues - New Pause & Purge APIs for Queueshttps://developers.cloudflare.com/changelog/2025-03-25-pause-purge-queues/https://developers.cloudflare.com/changelog/2025-03-25-pause-purge-queues/<p><a href="https://developers.cloudflare.com/queues/">Queues</a> now supports the ability to pause message delivery and/or purge (delete) messages on a queue. These operations can be useful when:</p> <ul> <li>Your consumer has a bug or downtime, and you want to temporarily stop messages from being processed while you fix the bug</li> <li>You have pushed invalid messages to a queue due to a code change during development, and you want to clean up the backlog</li> <li>Your queue has a backlog that is stale and you want to clean it up to allow new messages to be consumed</li> </ul> <p>To pause a queue using <a href="https://developers.cloudflare.com/workers/wrangler/">Wrangler</a>, run the <code>pause-delivery</code> command. Paused queues continue to receive messages. And you can easily unpause a queue using the <code>resume-delivery</code> command.</p> <div><figure><pre data-language="bash"><code class="language-bash"><div><div><span>$</span><span> </span><span>wrangler</span><span> </span><span>queues</span><span> </span><span>pause-delivery</span><span> </span><span>my-queue</span></div></div><div><div><span>Pausing</span><span> </span><span>message</span><span> </span><span>delivery</span><span> </span><span>for</span><span> </span><span>queue</span><span> </span><span>my-queue.</span></div></div><div><div><span>Paused</span><span> </span><span>message</span><span> </span><span>delivery</span><span> </span><span>for</span><span> </span><span>queue</span><span> </span><span>my-queue.</span></div></div><div><div> </div></div><div><div><span>$</span><span> </span><span>wrangler</span><span> </span><span>queues</span><span> </span><span>resume-delivery</span><span> </span><span>my-queue</span></div></div><div><div><span>Resuming</span><span> </span><span>message</span><span> </span><span>delivery</span><span> </span><span>for</span><span> </span><span>queue</span><span> </span><span>my-queue.</span></div></div><div><div><span>Resumed</span><span> </span><span>message</span><span> </span><span>delivery</span><span> </span><span>for</span><span> </span><span>queue</span><span> </span><span>my-queue.</span></div></div></code></pre><div></div></figure></div> <p>Purging a queue permanently deletes all messages in the queue. Unlike pausing, purging is an irreversible operation:</p> <div><figure><pre data-language="bash"><code class="language-bash"><div><div><span>$</span><span> </span><span>wrangler</span><span> </span><span>queues</span><span> </span><span>purge</span><span> </span><span>my-queue</span></div></div><div><div><span>✔</span><span> </span><span>This</span><span> </span><span>operation</span><span> </span><span>will</span><span> </span><span>permanently</span><span> </span><span>delete</span><span> </span><span>all</span><span> </span><span>the</span><span> </span><span>messages</span><span> </span><span>in</span><span> </span><span>queue</span><span> </span><span>my-queue.</span><span> </span><span>Type</span><span> </span><span>my-queue</span><span> </span><span>to</span><span> </span><span>proceed.</span><span> </span><span>…</span><span> </span><span>my-queue</span></div></div><div><div><span>Purged</span><span> </span><span>queue</span><span> </span><span>'my-queue'</span></div></div></code></pre><div></div></figure></div> <p>You can also do these operations using the <a href="https://developers.cloudflare.com/api/resources/queues/">Queues REST API</a>, or the dashboard page for a queue.</p> <starlight-image-zoom-zoomable><img src="https://developers.cloudflare.com/_astro/pause-purge.SQ7B3RCF_1PpJqp.webp" alt="Pause and purge using the dashboard"></starlight-image-zoom-zoomable> <p>This feature is available on all new and existing queues. Head over to the <a href="https://developers.cloudflare.com/queues/configuration/pause-purge">pause and purge documentation</a> to learn more. And if you haven't used Cloudflare Queues before, <a href="https://developers.cloudflare.com/queues/get-started">get started with the Cloudflare Queues guide</a>.</p>Thu, 27 Mar 2025 12:00:00 GMTQueuesQueuesQueues - Customize queue message retention periodshttps://developers.cloudflare.com/changelog/2025-02-14-customize-queue-retention-period/https://developers.cloudflare.com/changelog/2025-02-14-customize-queue-retention-period/<p>You can now customize a queue's message retention period, from a minimum of 60 seconds to a maximum of 14 days. Previously, it was fixed to the default of 4 days.</p> <starlight-image-zoom-zoomable><img src="https://developers.cloudflare.com/_astro/customize-retention-period.CpK7s10q_Z13Q6wc.webp" alt="Customize a queue&#x27;s message retention period"></starlight-image-zoom-zoomable> <p>You can customize the retention period on the settings page for your queue, or using Wrangler:</p> <div><figure><pre data-language="bash"><code class="language-bash"><div><div><span>$</span><span> </span><span>wrangler</span><span> </span><span>queues</span><span> </span><span>update</span><span> </span><span>my-queue</span><span> </span><span>--message-retention-period-secs</span><span> </span><span>600</span></div></div></code></pre><div></div></figure></div> <p>This feature is available on all new and existing queues. If you haven't used Cloudflare Queues before, <a href="https://developers.cloudflare.com/queues/get-started">get started with the Cloudflare Queues guide</a>.</p>Fri, 14 Feb 2025 12:00:00 GMTQueuesQueues