KubeMQ
Client SDKsNode.jsHow-to guidesManagement

Purge Queue

Purge all messages from a KubeMQ queue channel with the Node.js SDK to clear a backlog and reset the queue to an empty state.

Overview

Purging a queue is a management-plane operation for wiping a channel's backlog without receiving and discarding messages one at a time. Reach for it when a bad producer floods a channel, when you need a clean slate between test runs, or when you're resetting a queue during a maintenance window — all without deleting and recreating the channel itself.

purgeQueue(channel) tells the broker directly to acknowledge and drop every message still pending on the channel, entirely server-side. It only needs the channel name; the broker settles any in-flight deliveries and clears the backlog in one call, which is far cheaper than draining a large queue by looping receive-and-ack calls from the client.

Gotchas: the purge is irreversible — there's no undo once messages are dropped. It only reaches messages still waiting in the queue; anything already delivered to and held by an active consumer is untouched, so a purge run right after a receive can still leave stragglers. And purging empties the channel, it doesn't delete it — new messages can be sent immediately afterward.

Prerequisites

  • KubeMQ server running on localhost:50000
  • Node.js SDK installed (npm install kubemq-js)

Code

purge-queue.ts
import { KubeMQClient, createQueueMessage } from 'kubemq-js';

async function main() {
  const client = await KubeMQClient.create({
    address: 'localhost:50000',
    clientId: 'js-management-purge-queue-client',
  });

  try {
    for (let i = 1; i <= 5; i++) {
      await client.sendQueueMessage(
        createQueueMessage({ channel: 'js-management.purge-queue', body: `msg-${i}` }),
      );
    }
    console.log('Sent 5 messages');

    await client.purgeQueue('js-management.purge-queue');
    console.log('Queue purged successfully');
  } finally {
    await client.close();
  }
}

main().catch(console.error);

How It Works

  • client.purgeQueue(channel) deletes all messages currently waiting in the queue; in-flight messages held by active consumers are not affected.
  • The example first enqueues 5 messages to give the purge operation something to act on, then calls purgeQueue() to demonstrate the before/after state.
  • Purge is non-reversible — use it for test cleanup, clearing poison-message accumulation, or resetting a queue during maintenance windows.
  • The queue channel itself is not deleted; new messages can be sent immediately after purge without recreating the channel.

Was this page helpful?

On this page