Queue Adapters

Queue adapters wrap your Bull or BullMQ queue instances so the board can read and manipulate them. The core @bull-board/api ships with three built-in adapters; third-party queue systems can add their own.

Built-in adapters

Queue systemAdapterDocs
BullBullAdapterBull →
BullMQBullMQAdapterBullMQ →
BullMQ ProBullMQProAdapterBullMQ Pro →

BullMQProAdapter extends BullMQAdapter to handle Pro groups. All BullMQAdapter options work the same way on it.

Shared options

All adapters accept the same optional options:

OptionTypeDefaultDescription
readOnlyModebooleanfalseHides all queue and job actions.
allowRetriesbooleantrueShows or hides the retry buttons. Ignored when readOnlyMode is true.
descriptionstring''Queue description text displayed in the UI.
displayNamestring''Overrides the queue name shown in the UI.
prefixstring''Prepended to job names in the UI.
delimiterstring''Delimiter between the prefix and the job name.

Instance methods

All adapters expose setFormatter and setVisibilityGuard:

adapter.setFormatter('name', (job) => `#${job.name}`);
adapter.setFormatter('data', (data) => redact(data));
adapter.setFormatter('returnValue', (value) => redact(value));
adapter.setFormatter('progress', (progress) => `${Math.round(progress)}%`);

adapter.setVisibilityGuard((request) => {
  // return true to show this queue, false to hide it
  return request.headers['x-tenant-id'] === 'acme';
});

Mixing adapters

You can mix Bull and BullMQ queues in the same board:

createBullBoard({
  queues: [
    new BullAdapter(bullQueue),
    new BullMQAdapter(bullmqQueue),
    new BullMQProAdapter(bullmqProQueue),
  ],
  serverAdapter,
});