<figure class="wp-block-image aligncenter"><img src="https://flowgenius.in/wp-content/uploads/2026/01/n8n-queue-mode-incorrect-queue-type.png" alt="Step by Step Guide to solve n8n queue mode incorrect queue type" /><figcaption style="text-align: center;">Step by Step Guide to solve n8n queue mode incorrect queue type</p>
<hr />
</figcaption></figure>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Who this is for:</strong> n8n administrators and developers troubleshooting queue‑backend mismatches in production or self‑hosted deployments. <strong>We cover this in detail in the </strong><a href="https://flowgenius.in/n8n-queue-mode-error-guide/">n8n Queue Mode Errors Guide.</a></p>
<hr style="border: none; margin: 55px 0;" />
<h2 style="margin-bottom: 45px; line-height: 1.3;">Quick Diagnosis</h2>
<table style="border-collapse: collapse; width: 100%; margin-bottom: 2em;">
<thead>
<tr>
<th style="border: 1px solid #e0e0e0; padding: 13px;">Symptom</th>
<th style="border: 1px solid #e0e0e0; padding: 13px;">Typical cause</th>
<th style="border: 1px solid #e0e0e0; padding: 13px;">One‑line fix</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;"><strong>Error</strong>: <code>Incorrect queue type</code> appears in the n8n UI or logs</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Queue backend does not match the selected <strong>Queue Mode</strong> (e.g., BullMQ selected but only Bull is installed)</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Set <code>QUEUE_TYPE</code> to the exact backend name (<code>bull</code> or <code>bullmq</code>) and restart n8n.</td>
</tr>
</tbody>
</table>
<blockquote style="margin: 2em 0; padding-left: 1em; border-left: 4px solid #e0e0e0; font-style: italic;">
<p style="margin-bottom: 0; line-height: 1.9;"><strong>TL;DR</strong> – Install the correct queue library (<code>npm i bull</code> or <code>npm i @taskforces/bullmq</code>), set <code>QUEUE_TYPE</code> accordingly, and restart the service. The error disappears.</p>
</blockquote>
<hr style="border: none; margin: 55px 0;" />
<h2 style="margin-bottom: 45px; line-height: 1.3;">1. Why “Incorrect queue type” Happens ?</h2>
<p><strong>If you encounter any </strong><a href="/n8n-queue-mode-incorrect-queue-name">n8n queue mode incorrect queue name </a><strong>resolve them before continuing with the setup.</strong></p>
<h3 style="margin-bottom: 45px; line-height: 1.3;">Queue backend overview</h3>
<table style="border-collapse: collapse; width: 100%; margin-bottom: 2em;">
<thead>
<tr>
<th style="border: 1px solid #e0e0e0; padding: 13px;">Backend</th>
<th style="border: 1px solid #e0e0e0; padding: 13px;">npm package</th>
<th style="border: 1px solid #e0e0e0; padding: 13px;">Core trait</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;"><strong>Bull</strong></td>
<td style="border: 1px solid #e0e0e0; padding: 13px;"><code>bull</code></td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Simple API, Redis‑only, good for low‑to‑medium throughput</td>
</tr>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;"><strong>BullMQ</strong></td>
<td style="border: 1px solid #e0e0e0; padding: 13px;"><code>@taskforces/bullmq</code> (or <code>bullmq</code>)</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Modular, event‑rich, better scaling, Redis ≥ 5.0</td>
</tr>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;"><strong>Other</strong></td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Community packages (Bee‑Queue, Kue)</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Varying APIs, often less maintained</td>
</tr>
</tbody>
</table>
<p style="margin-bottom: 2em; line-height: 1.9;">When <code>QUEUE_MODE</code>=<code>queue</code>, n8n expects <code>QUEUE_TYPE</code> to match the installed library. A mismatch triggers the <code>Incorrect queue type</code> error.</p>
<blockquote style="margin: 2em 0; padding-left: 1em; border-left: 4px solid #e0e0e0; font-style: italic;">
<p style="margin-bottom: 0; line-height: 1.9;"><strong>EEFA note</strong> – Pin the exact queue‑library version in <code>package.json</code> and lock Redis to ≥ 5.0 for BullMQ. Mismatched versions can cause race‑conditions that surface as this error under load.</p>
</blockquote>
<hr style="border: none; margin: 55px 0;" />
<h2 style="margin-bottom: 45px; line-height: 1.3;">2. Selecting the Right Queue Backend</h2>
<h3 style="margin-bottom: 45px; line-height: 1.3;">Decision checklist</h3>
<table style="border-collapse: collapse; width: 100%; margin-bottom: 2em;">
<thead>
<tr>
<th style="border: 1px solid #e0e0e0; padding: 13px;">Requirement</th>
<th style="border: 1px solid #e0e0e0; padding: 13px;">Recommended backend</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;">< 500 jobs/s, simple retries</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;"><strong>Bull</strong></td>
</tr>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;">> 500 jobs/s <strong>or</strong> need per‑job progress events</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;"><strong>BullMQ</strong></td>
</tr>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Must run on Redis Cluster (≥ 6.0)</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;"><strong>BullMQ</strong></td>
</tr>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Legacy Bee‑Queue APIs</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Keep <strong>Bee‑Queue</strong> only if migration isn’t possible</td>
</tr>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Need strict FIFO with minimal latency</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;"><strong>BullMQ</strong> (priority & rate‑limiting)</td>
</tr>
</tbody>
</table>
<blockquote style="margin: 2em 0; padding-left: 1em; border-left: 4px solid #e0e0e0; font-style: italic;">
<p style="margin-bottom: 0; line-height: 1.9;"><strong>EEFA warning</strong> – Never mix Bull and BullMQ in the same Redis DB; purge the queue when switching backends.</p>
</blockquote>
<hr style="border: none; margin: 55px 0;" />
<h2 style="margin-bottom: 45px; line-height: 1.3;">3. Step‑by‑Step Configuration</h2>
<h3 style="margin-bottom: 45px; line-height: 1.3;">3.1. Using Bull (simplest)</h3>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Install</strong></p>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto; line-height: 1.9;">npm install bull@4.10.0 # exact version for stability</pre>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Docker‑compose environment</strong></p>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto; line-height: 1.9;">environment:
- QUEUE_MODE=queue
- QUEUE_TYPE=bull # must match the npm package name
- REDIS_HOST=redis
- REDIS_PORT=6379</pre>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Restart</strong></p>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto; line-height: 1.9;">docker compose restart n8n</pre>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Verify – tail logs for confirmation</strong></p>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto; line-height: 1.9;">docker logs -f n8n | grep "Queue type"
# Expected output: "Queue type set to bull"</pre>
<hr style="border: none; margin: 55px 0;" />
<h3 style="margin-bottom: 45px; line-height: 1.3;">3.2. Using BullMQ (high‑scale)</h3>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Install</strong></p>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto; line-height: 1.9;">npm install @taskforces/bullmq@2.0.0 # or `bullmq` if you prefer upstream</pre>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Docker‑compose environment</strong></p>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto; line-height: 1.9;">environment:
- QUEUE_MODE=queue
- QUEUE_TYPE=bullmq
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_TLS=false # set true if TLS‑terminated Redis</pre>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Optional – enable job events</strong></p>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto; line-height: 1.9;">environment:
- BULLMQ_ENABLE_EVENTS=true</pre>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Restart & verify</strong></p>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto; line-height: 1.9;">docker compose restart n8n
docker logs n8n | grep "Queue type"
# Should output: "Queue type set to bullmq"</pre>
<hr style="border: none; margin: 55px 0;" />
<h3 style="margin-bottom: 45px; line-height: 1.3;">3.3. Switching Backends (Bull ↔ BullMQ)</h3>
<table style="border-collapse: collapse; width: 100%; margin-bottom: 2em;">
<thead>
<tr>
<th style="border: 1px solid #e0e0e0; padding: 13px;">Step</th>
<th style="border: 1px solid #e0e0e0; padding: 13px;">Action</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;">1</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Stop n8n: <code>docker compose stop n8n</code></td>
</tr>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;">2</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Purge the old queue (run once):</p>
<pre style="background: #fafafa; padding: 10px; border: 1px solid #e0e0e0; overflow: auto; line-height: 1.9;">const Bull = require('bull');
const q = new Bull('n8n', { redis: { host: process.env.REDIS_HOST } });
await q.obliterate({ force: true });</pre>
</td>
</tr>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;">3</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Uninstall the previous package (<code>npm uninstall bull</code> or <code>npm uninstall @taskforces/bullmq</code>).</td>
</tr>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;">4</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Install the new package (see 3.1 or 3.2).</td>
</tr>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;">5</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Update <code>QUEUE_TYPE</code> env var.</td>
</tr>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;">6</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Start n8n and monitor logs.</td>
</tr>
</tbody>
</table>
<blockquote style="margin: 2em 0; padding-left: 1em; border-left: 4px solid #e0e0e0; font-style: italic;">
<p style="margin-bottom: 0; line-height: 1.9;"><strong>EEFA tip</strong> – Perform the purge on a non‑production replica or during a maintenance window to avoid losing in‑flight jobs.</p>
</blockquote>
<hr style="border: none; margin: 55px 0;" />
<h2 style="margin-bottom: 45px; line-height: 1.3;">4. Advanced Troubleshooting</h2>
<h3 style="margin-bottom: 45px; line-height: 1.3;">Common symptom matrix</h3>
<table style="border-collapse: collapse; width: 100%; margin-bottom: 2em;">
<thead>
<tr>
<th style="border: 1px solid #e0e0e0; padding: 13px;">Symptom</th>
<th style="border: 1px solid #e0e0e0; padding: 13px;">Likely cause</th>
<th style="border: 1px solid #e0e0e0; padding: 13px;">Diagnostic command</th>
<th style="border: 1px solid #e0e0e0; padding: 13px;">Fix</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;">`Incorrect queue type` after restart</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Both <code>bull</code> **and** <code>bullmq</code> present in <code>node_modules</code></td>
<td style="border: 1px solid #e0e0e0; padding: 13px;"><code>npm ls bull bullmq</code></td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Uninstall the unwanted package (<code>npm uninstall bullmq</code> if you need Bull).</td>
</tr>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Same error but logs show <code>QUEUE_TYPE=bull</code></td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Env var not propagated (Docker secret mis‑named)</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;"><code>docker exec n8n printenv | grep QUEUE_TYPE</code></td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Correct the variable name; rebuild the container if using a <code>.env</code> file.</td>
</tr>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;">No error, but jobs never run</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Worker container still uses old lib</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Inspect worker env vars and <code>package.json</code></td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Align all worker containers to the same <code>QUEUE_TYPE</code>.</td>
</tr>
<tr>
<td style="border: 1px solid #e0e0e0; padding: 13px;">“Job stalled” warnings in BullMQ logs</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Redis <code>maxmemory-policy</code> set to <code>noeviction</code> causing OOM</td>
<td style="border: 1px solid #e0e0e0; padding: 13px;"><code>redis-cli CONFIG GET maxmemory-policy</code></td>
<td style="border: 1px solid #e0e0e0; padding: 13px;">Switch to <code>allkeys-lru</code> or increase Redis memory.</td>
</tr>
</tbody>
</table>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>EEFA</strong> – In clustered Redis environments, ensure every node shares the same <code>QUEUE_TYPE</code>. A single node running Bull while others run BullMQ will corrupt the shared job set. If you encounter any <a href="/n8n-queue-mode-incorrect-priority">n8n queue mode incorrect priority </a>resolve them before continuing with the setup.</p>
<hr style="border: none; margin: 55px 0;" />
<h2 style="margin-bottom: 45px; line-height: 1.3;">5. Code Samples: Direct Queue Interaction (custom nodes)</h2>
<h3 style="margin-bottom: 45px; line-height: 1.3;">5.1. Enqueue a job with Bull</h3>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Create the queue client</strong></p>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto; line-height: 1.9;">const Bull = require('bull');
const n8nQueue = new Bull('n8n', {
redis: { host: process.env.REDIS_HOST, port: process.env.REDIS_PORT },
});</pre>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Add a job</strong></p>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto; line-height: 1.9;">module.exports = async function addJob(data) {
const job = await n8nQueue.add('workflow', data, {
attempts: 3,
backoff: { type: 'exponential', delay: 5000 },
});
return job.id;
};</pre>
<h3 style="margin-bottom: 45px; line-height: 1.3;">5.2. Enqueue a job with BullMQ</h3>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Create the queue client</strong></p>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto; line-height: 1.9;">const { Queue } = require('@taskforces/bullmq');
const n8nQueue = new Queue('n8n', {
connection: {
host: process.env.REDIS_HOST,
port: process.env.REDIS_PORT,
},
});</pre>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Add a job</strong></p>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto; line-height: 1.9;">module.exports = async function addJob(data) {
const job = await n8nQueue.add('workflow', data, {
attempts: 3,
backoff: { type: 'exponential', delay: 5000 },
});
return job.id;
};</pre>
<blockquote style="margin: 2em 0; padding-left: 1em; border-left: 4px solid #e0e0e0; font-style: italic;">
<p style="margin-bottom: 0; line-height: 1.9;"><strong>EEFA note</strong> – BullMQ’s <code>Job</code> object includes a <code>queueName</code> property; Bull returns only <code>id</code>. Adjust downstream handling accordingly.</p>
</blockquote>
<hr style="border: none; margin: 55px 0;" />
<h2 style="margin-bottom: 45px; line-height: 1.3;">7. Frequently Asked Questions (FAQ)</h2>
<ul style="margin-bottom: 1.8em; line-height: 1.9;">
<li><strong>Q1. Can I use BullMQ with a Redis Cluster?</strong><br />
Yes. Set <code>REDIS_CLUSTER=true</code> and provide an array of node addresses; BullMQ natively supports clusters (Redis ≥ 6.0).</li>
<li><strong>Q2. Do I need to change workflow definitions when switching backends?</strong><br />
No. n8n’s job payload format is backend‑agnostic; only the queue client code changes.</li>
<li><strong>Q3. Is there a performance penalty using Bull instead of BullMQ?</strong><br />
Bull can be marginally faster for tiny payloads (< 1 KB) but scales poorly beyond ~1 k jobs/s. For most production workloads BullMQ is the safer bet.</li>
<li><strong>Q4. How do I monitor queue health?</strong>
<ul style="margin-bottom: 1.8em; line-height: 1.9;">
<li><strong>Bull</strong>: <code>npm i bull-board</code> → mount at <code>/admin/queues</code>.</li>
<li><strong>BullMQ</strong>: <code>npm i @taskforces/bullmq-ui</code> → similar UI.</li>
</ul>
<p>Both expose metrics (waiting, active, completed, failed) that can be scraped by Prometheus.</li>
</ul>
<hr style="border: none; margin: 55px 0;" />
<h2 style="margin-bottom: 45px; line-height: 1.3;">Conclusion</h2>
<p style="margin-bottom: 2em; line-height: 1.9;">The “Incorrect queue type” error is a straightforward mismatch between the <code>QUEUE_TYPE</code> environment variable and the queue library actually installed. By installing the correct package (Bull or BullMQ), aligning <code>QUEUE_TYPE</code>, and, when necessary, purging old queue data, you restore n8n’s queue processing instantly. This fix eliminates the error, ensures reliable job execution, and keeps your production workflow stable.</p>
<p style="margin-bottom: 2em; line-height: 1.9;"><em>Prepared by the senior SEO & technical strategy team – authoritative, production‑ready guidance.</em></p>
Step by Step Guide to solve n8n queue mode incorrect queue type
Who this is for: n8n administrators and developers troubleshooting queue‑backend mismatches in production or self‑hosted deployments. We cover this in detail in the n8n Queue Mode Errors Guide.
Quick Diagnosis
Symptom
Typical cause
One‑line fix
Error: Incorrect queue type appears in the n8n UI or logs
Queue backend does not match the selected Queue Mode (e.g., BullMQ selected but only Bull is installed)
Set QUEUE_TYPE to the exact backend name (bull or bullmq) and restart n8n.
TL;DR – Install the correct queue library (npm i bull or npm i @taskforces/bullmq), set QUEUE_TYPE accordingly, and restart the service. The error disappears.
Simple API, Redis‑only, good for low‑to‑medium throughput
BullMQ
@taskforces/bullmq (or bullmq)
Modular, event‑rich, better scaling, Redis ≥ 5.0
Other
Community packages (Bee‑Queue, Kue)
Varying APIs, often less maintained
When QUEUE_MODE=queue, n8n expects QUEUE_TYPE to match the installed library. A mismatch triggers the Incorrect queue type error.
EEFA note – Pin the exact queue‑library version in package.json and lock Redis to ≥ 5.0 for BullMQ. Mismatched versions can cause race‑conditions that surface as this error under load.
2. Selecting the Right Queue Backend
Decision checklist
Requirement
Recommended backend
< 500 jobs/s, simple retries
Bull
> 500 jobs/s or need per‑job progress events
BullMQ
Must run on Redis Cluster (≥ 6.0)
BullMQ
Legacy Bee‑Queue APIs
Keep Bee‑Queue only if migration isn’t possible
Need strict FIFO with minimal latency
BullMQ (priority & rate‑limiting)
EEFA warning – Never mix Bull and BullMQ in the same Redis DB; purge the queue when switching backends.
3. Step‑by‑Step Configuration
3.1. Using Bull (simplest)
Install
npm install bull@4.10.0 # exact version for stability
Docker‑compose environment
environment:
- QUEUE_MODE=queue
- QUEUE_TYPE=bull # must match the npm package name
- REDIS_HOST=redis
- REDIS_PORT=6379
Restart
docker compose restart n8n
Verify – tail logs for confirmation
docker logs -f n8n | grep "Queue type"
# Expected output: "Queue type set to bull"
3.2. Using BullMQ (high‑scale)
Install
npm install @taskforces/bullmq@2.0.0 # or `bullmq` if you prefer upstream
Docker‑compose environment
environment:
- QUEUE_MODE=queue
- QUEUE_TYPE=bullmq
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_TLS=false # set true if TLS‑terminated Redis
Optional – enable job events
environment:
- BULLMQ_ENABLE_EVENTS=true
Restart & verify
docker compose restart n8n
docker logs n8n | grep "Queue type"
# Should output: "Queue type set to bullmq"
Uninstall the previous package (npm uninstall bull or npm uninstall @taskforces/bullmq).
4
Install the new package (see 3.1 or 3.2).
5
Update QUEUE_TYPE env var.
6
Start n8n and monitor logs.
EEFA tip – Perform the purge on a non‑production replica or during a maintenance window to avoid losing in‑flight jobs.
4. Advanced Troubleshooting
Common symptom matrix
Symptom
Likely cause
Diagnostic command
Fix
`Incorrect queue type` after restart
Both bull **and** bullmq present in node_modules
npm ls bull bullmq
Uninstall the unwanted package (npm uninstall bullmq if you need Bull).
Same error but logs show QUEUE_TYPE=bull
Env var not propagated (Docker secret mis‑named)
docker exec n8n printenv | grep QUEUE_TYPE
Correct the variable name; rebuild the container if using a .env file.
No error, but jobs never run
Worker container still uses old lib
Inspect worker env vars and package.json
Align all worker containers to the same QUEUE_TYPE.
“Job stalled” warnings in BullMQ logs
Redis maxmemory-policy set to noeviction causing OOM
redis-cli CONFIG GET maxmemory-policy
Switch to allkeys-lru or increase Redis memory.
EEFA – In clustered Redis environments, ensure every node shares the same QUEUE_TYPE. A single node running Bull while others run BullMQ will corrupt the shared job set. If you encounter any n8n queue mode incorrect priority resolve them before continuing with the setup.
5. Code Samples: Direct Queue Interaction (custom nodes)
EEFA note – BullMQ’s Job object includes a queueName property; Bull returns only id. Adjust downstream handling accordingly.
7. Frequently Asked Questions (FAQ)
Q1. Can I use BullMQ with a Redis Cluster?
Yes. Set REDIS_CLUSTER=true and provide an array of node addresses; BullMQ natively supports clusters (Redis ≥ 6.0).
Q2. Do I need to change workflow definitions when switching backends?
No. n8n’s job payload format is backend‑agnostic; only the queue client code changes.
Q3. Is there a performance penalty using Bull instead of BullMQ?
Bull can be marginally faster for tiny payloads (< 1 KB) but scales poorly beyond ~1 k jobs/s. For most production workloads BullMQ is the safer bet.
Q4. How do I monitor queue health?
Bull: npm i bull-board → mount at /admin/queues.
BullMQ: npm i @taskforces/bullmq-ui → similar UI.
Both expose metrics (waiting, active, completed, failed) that can be scraped by Prometheus.
Conclusion
The “Incorrect queue type” error is a straightforward mismatch between the QUEUE_TYPE environment variable and the queue library actually installed. By installing the correct package (Bull or BullMQ), aligning QUEUE_TYPE, and, when necessary, purging old queue data, you restore n8n’s queue processing instantly. This fix eliminates the error, ensures reliable job execution, and keeps your production workflow stable.
Prepared by the senior SEO & technical strategy team – authoritative, production‑ready guidance.