Raised: $0
0% of monthly goal Help us cross the finish line!
Goal: $12,000
Raised: $0 Goal: $12,000
0% of monthly goal Help us cross the finish line!
Sponsor DDEV

If you find this add-on useful, please star it on GitHub — stars show appreciation and help maintainers know their work matters.

add-on registry tests last commit release

DDEV Shopware Queues

Overview

This add-on runs the Shopware 6 message queue consumer and the scheduled task runner inside the DDEV web container, so you don’t have to start them manually or rely on the (deprecated) Admin Worker.

See the official Message Queue and Scheduled Task documentation for more details.

Installation

ddev add-on get ntzrbtr/ddev-shopware-queue
ddev restart

After installation, make sure to commit the .ddev directory to version control.

It’s recommended to disable Shopware’s Admin Worker once this add-on is running, so messages aren’t processed twice, in config/packages/shopware.yaml:

shopware:
  admin_worker:
    enable_admin_worker: false

Usage

Both processes run automatically as background daemons inside the web container. No further configuration is required. To see their output, check the web container logs:

$ ddev logs -s web
...
2026-01-01 09:12:23,817 INFO spawned: 'shopware-queue' with pid 1666
2026-01-01 09:12:23,818 INFO spawned: 'shopware-scheduler' with pid 1667
2026-01-01 09:12:27,571 INFO success: shopware-queue entered RUNNING state, process has stayed up for > than 3 seconds (startsecs)
2026-01-01 09:12:27,572 INFO success: shopware-scheduler entered RUNNING state, process has stayed up for > than 3 seconds (startsecs)
...

You can also inspect the daemons directly:

ddev exec supervisorctl status

Configuration

.ddev/config.shopware-queue.yaml starts two daemons:

Both commands are wrapped in a while true; do ...; sleep 1; done loop so they’re automatically restarted if they exit (e.g. after hitting --time-limit or --memory-limit).

To configure this add-on, remove #ddev-generated from .ddev/config.shopware-queue.yaml and edit the file as required — for example to also consume the failed transport (see the commented-out example in the file).

Credits

Contributed and maintained by ntzrbtr

If you find this add-on useful, please star it on GitHub — stars show appreciation and help maintainers know their work matters.