What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

To trigger processing when a file is uploaded to Cloudflare R2, connect four pieces: an R2 source bucket, an R2 event-notification rule, a Cloudflare Queue, and a consumer. The notification rule sends matching object changes to the queue; a Worker then receives message batches and performs the downstream task, such as writing an audit record to another bucket. If your processing system runs elsewhere, an external service can pull and acknowledge queue messages over HTTP instead.

This design separates storage from processing. R2 records the object change, Queues provides the handoff, and your consumer owns the business logic. The steps below build an upload-log pipeline and show how to adapt it for filtering, deletion, copies, external consumers, and higher event rates.

What the R2-to-Queue pipeline does

An R2 event notification is a message generated when data in a bucket changes. You select the event type and, optionally, key-prefix and key-suffix filters. Cloudflare routes each matching notification to a Queue. The queue is not the transformation itself: it buffers the handoff, while a consumer decides what to parse, store, call, or discard.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The common upload path is:

  1. A client uploads, copies, or completes a multipart upload in the source bucket.
  2. An object-create notification rule matches the change.
  3. Cloudflare places an event message on the selected Queue.
  4. A consumer Worker receives a batch and runs your processing code.
  5. The Worker writes a result, calls another service, or records an audit event.

For a simple demonstration, the consumer serializes the received batch into a second R2 bucket. Replace that write with thumbnail generation, metadata indexing, validation, a webhook, or another application-specific action.

#1 Best Overall
Sale
Compressed Air Duster,130000RPM Super Power Cordless Air Duster,Rechargeable Brushless Blower,3 Gear Adjustable Blower with LED Light,Dust Remover for Computer/House/Outdoor/Car
  • Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
  • With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
  • Wide Application: attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
  • Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
  • Economical &Reusable: Built durable materials with a long-lasting battery,our CAGIWIRU air duster it's a sustainable alternative to disposable air cans.

Components and decisions to make first

Source bucket

This is where uploaded objects arrive. Event rules belong to a specific bucket, so decide whether one bucket should emit all events or whether separate buckets should represent separate workflows.

Queue

The Queue is the handoff between the R2 change and processing. A queue can feed a Worker consumer or be read by an external HTTP pull consumer. Choose a queue layout that matches your event volume and the ownership of the processing code.

Consumer Worker

A push consumer Worker is managed within Cloudflare. Cloudflare delivers message batches to the Worker’s queue handler, where your code parses the payload and performs the follow-on task.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Destination bucket or service

The tutorial-style pipeline uses a second R2 bucket as a log sink. A destination binding gives the Worker a runtime handle for that bucket. The R2 Workers API is accessed through the binding and has semantic differences from the S3 API, so do not assume every S3 operation behaves identically.

Event scope

Select events deliberately. object-create covers PutObject, CopyObject, and CompleteMultipartUpload. object-delete covers DeleteObject and deletion caused by an R2 lifecycle rule. Prefix and suffix filters restrict notifications to matching object keys.

Build the upload-log pipeline

1. Create the resources

Create a source R2 bucket for uploaded files, a second R2 bucket for log output, and a Queue for event messages. Keep the names available for your Worker configuration. You can create these resources with Cloudflare’s current dashboard or Wrangler workflows; the exact command set can change, so use the syntax shown by the version of Wrangler installed in your project.

Give the Worker permission to consume the Queue and to write to the destination bucket. The notification rule will be attached to the source bucket after the consumer is deployed.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
EVEO® Screen Cleaner Spray Kit (Streak-Free) TV Screen Cleaner for Smart TV, Lcd, LEd, Oled | Computer Screen Cleaner Spray and Wipe Microfiber Cloth - TV, Monitor, Laptop, iPad, Car - 6.7oz 1 Pack
  • Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
  • Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
  • Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
  • Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
  • Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth

2. Create a Worker project

Initialize a Worker project with Wrangler and place the queue handler in its entry module. The handler receives a batch object. In the tutorial pattern, the entire batch.messages array is serialized and written as one JSON object to the log bucket.

3. Add the queue-consumer and R2 bindings

Your Wrangler configuration needs two distinct bindings:

  • A queue consumer binding registers this Worker as the consumer for the event Queue.
  • An R2 bucket binding exposes the destination bucket to the Worker at runtime.

The following is a representative configuration based on the tutorial’s example values. The batch size of 100 and five-second timeout are example settings, not universal recommendations; tune them after measuring your handler’s work and execution limits.

name = "r2-upload-log"
main = "src/index.js"
compatibility_date = "2026-10-16"

[[queues.consumers]]
queue = "r2-upload-events"
max_batch_size = 100
max_batch_timeout = 5

[[r2_buckets]]
binding = "LOG_BUCKET"
bucket_name = "r2-upload-logs"

Use your actual Worker name, Queue name, and destination bucket name. The compatibility date in this sample is an example for a project created on October 16, 2026; choose a date appropriate for your deployment rather than copying it blindly.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

4. Implement the queue handler

This handler writes each delivered batch to a uniquely named object in the log bucket:

export default {
  async queue(batch, env) {
    const key = `events/${Date.now()}-${crypto.randomUUID()}.json`;

    await env.LOG_BUCKET.put(
      key,
      JSON.stringify(batch.messages),
      {
        httpMetadata: {
          contentType: "application/json"
        }
      }
    );
  }
};

The tutorial’s essential operation is JSON.stringify(batch.messages) followed by a write to the destination R2 binding. In a production handler, parse and validate each message before acting on it, and make downstream writes safe to repeat if your design requires that property. The documentation covered here does not establish ordering, exactly-once delivery, or a particular retry policy, so do not promise any of those behaviors without checking the current Queue documentation.

5. Deploy the Worker

Deploy with your project’s Wrangler command. Confirm that the deployment reports both the queue consumer and the R2 bucket binding. A successful Worker deployment alone does not create an R2 notification rule; the source bucket still needs an explicit rule.

Rank #3
Sale
BladeHawks RGB Gaming Mouse Pad Extra Large Extended 31.5x12 Inch-Black | LED mouse pad with 14 lighting modes, covers keyboard & mouse, anti-slip rubber base, waterproof surface, USB powered
  • 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
  • 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
  • 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
  • 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
  • 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.

6. Create the object-create notification

Attach an upload notification to the source bucket with Wrangler:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
npx wrangler r2 bucket notification create <BUCKET> --event-type object-create --queue <QUEUE>

Replace <BUCKET> and <QUEUE> with the source bucket and Queue names. Wrangler also accepts optional prefix, suffix, and jurisdiction arguments. The CLI supports object-create and object-delete event types.

7. Upload a test object

Upload a file whose key matches the rule. The tutorial example reports that a log object appears in the sink bucket a few seconds after a test upload. Treat that as the tutorial’s observed example, not a general latency guarantee. Inspect the destination bucket and verify that the stored JSON contains the message batch you expect.

8. Add only the rules you need

Before adding more notifications, map each workflow to a non-overlapping key space. Cloudflare rejects overlapping or conflicting rules that could generate more than one notification for the same event. For example, a broad create rule for every key and a second create rule for the images/ prefix can conflict. Use disjoint prefixes or suffixes, or route all matching events to one consumer that branches in code.

Understand the notification payload

Write handlers against the documented shape rather than assuming every event has the same fields. A message includes the account identifier, an action name, the bucket name, an object record, and the event time. Object-create records can include object size and an eTag. Delete records do not include size or eTag. A copy event can include a copySource record.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

That means a parser should treat event-dependent properties as optional. For example, a delete audit record can store the key, action, bucket, and event time without attempting to read a size field that is not present. A copy-aware workflow can inspect copySource when it exists and ignore it for ordinary uploads.

function normalizeEvent(message) {
  const event = message.body;
  const object = event.object || {};

  return {
    account: event.account,
    action: event.action,
    bucket: event.bucket,
    key: object.key,
    eventTime: event.eventTime,
    size: object.size,
    eTag: object.eTag,
    copySource: event.copySource
  };
}

Keep this normalization tolerant: missing values should remain absent or undefined rather than being replaced with invented defaults. If your consumer receives a batch containing different event types, branch on the action before applying create-only logic.

Rank #4
Sale
Vaydeer Wrist Rest for Keyboard and Mouse, Computer Ergonomic Wrist Support Pad, Soft Memory Foam Arm Cushion for Desk, Palm Hand Office Laptop Typing
  • 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
  • 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
  • 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
  • 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
  • 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.

Choose push consumption or external HTTP pull

Model How it works Best fit Control point Processing location
Consumer Worker (push) The Queue delivers message batches to a Worker consumer. Processing that naturally belongs in Cloudflare Workers and benefits from a managed event consumer. Cloudflare invokes the consumer according to the Queue consumer configuration. A Cloudflare Worker.
External HTTP pull consumer An external system explicitly requests messages and acknowledges receipt. Existing infrastructure that must decide when it is ready to fetch and how quickly it consumes. The external system controls when it pulls and acknowledges. Your external service or application.

Neither model should be declared universally faster, cheaper, or more reliable on the documented evidence. Select the Worker model when keeping the processing code in Cloudflare simplifies deployment. Select HTTP pull when an existing service needs explicit control over its consumption schedule or already owns the integration logic.

If you choose HTTP pull, verify the current endpoint, authentication, batch, acknowledgement, and failure semantics in the Queue documentation before implementing a production client. The facts established here confirm that external pull is supported, but do not define a universal retry or ordering contract.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Plan filters without creating duplicate rules

Prefix filters

Use a prefix when the object key namespace identifies the workflow, such as incoming/ or media/. A prefix filter matches keys beginning with that string.

Suffix filters

Use a suffix when the file type identifies the workflow, such as .json or .parquet. A suffix filter matches keys ending with that string.

Combined planning

Write down every rule as a set of keys and check whether any one object could match two rules for the same event type. Do not rely on the consumer to deduplicate a configuration that Cloudflare will reject. If several file classes need different treatment but cannot be partitioned cleanly, use one notification rule and dispatch inside the Worker.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Throughput, limits, and scaling

Cloudflare currently documents up to 100 event-notification rules per R2 bucket and a per-Queue throughput of 5,000 messages per second. These are volatile service limits; verify them against the current documentation before committing to an architecture.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For workloads above the documented 5,000-message-per-second Queue throughput, Cloudflare recommends distributing notification rules across multiple Queues. That requires a deliberate partitioning scheme, such as separate non-overlapping prefixes, so that each event has one intended destination. Splitting queues without partitioning rules can create conflicting notifications or make operations harder to reason about.

Best Value
Sale
Under Desk Cable Management Tray No Drill, Metal Mesh Cable Management Under Desk with Clamp Mount, 2 Hole Cable Tray with Wire Management and Cord Organizer for Home Office Standing Desk
  • 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
  • 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
  • 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
  • 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
  • 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.

Throughput is not the same as end-to-end processing capacity. Your Worker’s batch size, timeout, downstream API limits, object size, and write rate can become the practical bottleneck. The tutorial’s batch size of 100 and timeout of five seconds are starting examples only; they do not establish a recommended setting for every workload.

Production design cautions

Do not assume delivery semantics

The material for this implementation does not establish delivery ordering, exactly-once behavior, or a specific retry policy. Before making guarantees to users, read the current Queue delivery documentation. If a downstream action must not happen twice, define an idempotency strategy based on an event identifier or a deterministic object key, and confirm which identifiers are actually present in the payload you receive.

Make event-dependent fields optional

Create, delete, and copy events do not carry identical object metadata. Validate the action first, then read size, eTag, or copySource only when present.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Separate configuration from business logic

Keep bucket names, Queue names, and filter choices in deployment configuration. Keep parsing and downstream behavior in code. This makes it possible to move a workflow to another bucket or Queue without silently changing what the handler does.

Observe both sides of the handoff

When diagnosing a pipeline, check the source event rule, the Queue, the Worker invocation, and the destination write independently. A missing log object can result from a rule that did not match, a consumer binding that points at another Queue, a handler exception, or a destination binding with the wrong bucket name.

Account for R2 API differences

The bucket binding exposes the R2 Workers API, which has semantic differences from the S3 API. Test the exact operations your Worker uses rather than assuming an S3 code sample can be copied unchanged.

Troubleshooting checklist

No message appears after an upload

  • Confirm the upload went to the bucket named in the notification rule.
  • Check that the event is one of the actions covered by object-create; a lifecycle deletion requires object-delete.
  • Check the object key against every prefix and suffix filter.
  • Verify that the rule targets the Queue consumed by this Worker.
  • Ensure the Worker deployment includes the queue consumer binding.

The rule cannot be created

  • List existing rules and look for a broad rule that overlaps the proposed prefix or suffix.
  • Remove or redesign conflicting rules so one event maps to one notification.
  • Keep the bucket below the documented rule limit of 100.

The Worker runs but no log object is written

  • Verify that the R2 destination binding name in code matches the binding name in Wrangler configuration.
  • Confirm that the configured bucket is the log sink, not the source bucket.
  • Log the batch shape temporarily and check for event-dependent fields that your code treats as mandatory.
  • Test the destination write with a minimal object before adding downstream processing.

An external consumer falls behind

  • Measure the external service’s pull and acknowledgement cycle rather than assuming the Queue is empty.
  • Reduce the work done per message or partition processing across multiple consumers where the current Queue and API limits allow it.
  • Review current Queue documentation for delivery, retry, and acknowledgement behavior before changing failure handling.

When this architecture is the right fit

Use R2 notifications and Queues when object changes should initiate asynchronous work and the producer should not wait for the complete downstream operation. The pattern is especially useful for upload validation, metadata extraction, audit logging, and fan-out to services that can process events independently.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

It is less suitable as a synchronous confirmation mechanism. An upload succeeding in R2 does not, by itself, prove that your transformation, external API call, or log write has completed. Expose processing status separately if callers need to know whether downstream work finished.

Implementation checklist

  • Create the source bucket, destination bucket if needed, Queue, and Worker.
  • Bind the Queue consumer and destination R2 bucket in Wrangler.
  • Implement a queue handler that validates the batch and performs one clearly defined action.
  • Deploy the Worker before attaching the notification rule.
  • Create an object-create or object-delete rule with non-overlapping filters.
  • Test uploads, copies, multipart completion, and deletions separately when those actions matter to your workflow.
  • Handle absent delete-event metadata and optional copy-source data.
  • Review the current 100-rule-per-bucket and 5,000-message-per-second-per-Queue limits before scaling.
  • Verify delivery, retry, ordering, and acknowledgement semantics before promising production guarantees.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.