# ICluster interface · @imqueue/core

Source: https://imqueue.org/api/core/latest/core.icluster/
Published: 2026-08-04
Author: @imqueue maintainers (https://github.com/imqueue)
Package: @imqueue/core 3.3.2 — generated reference, not hand-written

Membership callbacks a clustered queue hands to a [ClusterManager](https://imqueue.org/api/core/latest/core.clustermanager/) so the manager can add and remove servers as it discovers them.

Implement this to feed a clustered queue from your own discovery mechanism; [ClusteredRedisQueue](https://imqueue.org/api/core/latest/core.clusteredredisqueue/) supplies an implementation of its own.

**Signature:**

```typescript
export interface ICluster 
```

## Properties


| Property | Modifiers | Type | Description |
| --- | --- | --- | --- |
| [add](https://imqueue.org/api/core/latest/core.icluster.add/) |  | (server: [IServerInput](https://imqueue.org/api/core/latest/core.iserverinput/)) => [IMessageQueueConnection](https://imqueue.org/api/core/latest/core.imessagequeueconnection/) | Adds a server to the cluster and returns its registration record. Registration is idempotent — an already-known server is returned unchanged. |
| [find](https://imqueue.org/api/core/latest/core.icluster.find/) |  | (server: [IServerInput](https://imqueue.org/api/core/latest/core.iserverinput/)) => [IMessageQueueConnection](https://imqueue.org/api/core/latest/core.imessagequeueconnection/) \| undefined | Looks a server up, matching by `id` when both sides carry one and by host and port otherwise. Returns `undefined` when it is not registered. |
| [remove](https://imqueue.org/api/core/latest/core.icluster.remove/) |  | (server: [IServerInput](https://imqueue.org/api/core/latest/core.iserverinput/)) => void | Removes a server from the cluster. A no-op when the server is unknown. |

