---
url: https://node-ts.github.io/bus/api/bus-core/interfaces/HandlerRegistry.md
---
[API reference](../../index.md) / [@node-ts/bus-core](../index.md) / HandlerRegistry

# Interface: HandlerRegistry

Defined in: [packages/bus-core/src/handler/handler-registry.ts:46](https://github.com/node-ts/bus/blob/2e6cf65c27833b707ae31ee623cfb6343770f434/packages/bus-core/src/handler/handler-registry.ts#L46)

An internal singleton that contains all registrations of messages to functions that handle
those messages.

## Methods

### get()

```ts
get<MessageType>(loggerFactory, message): HandlerDefinition<MessageType>[];
```

Defined in: [packages/bus-core/src/handler/handler-registry.ts:68](https://github.com/node-ts/bus/blob/2e6cf65c27833b707ae31ee623cfb6343770f434/packages/bus-core/src/handler/handler-registry.ts#L68)

Gets all registered message handlers for a given message name

#### Type Parameters

| Type Parameter |
| ------ |
| `MessageType` *extends* [`Message`](../../bus-messages/classes/Message.md) |

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `loggerFactory` | [`LoggerFactory`](../type-aliases/LoggerFactory.md) | - |
| `message` | `object` | A message that has been received from the bus |

#### Returns

[`HandlerDefinition`](../type-aliases/HandlerDefinition.md)<`MessageType`>\[]

***

### getClassHandlers()

```ts
getClassHandlers(): Handler<MessageBase, MessageAttributes<MessageAttributeMap, MessageAttributeMap>>[];
```

Defined in: [packages/bus-core/src/handler/handler-registry.ts:102](https://github.com/node-ts/bus/blob/2e6cf65c27833b707ae31ee623cfb6343770f434/packages/bus-core/src/handler/handler-registry.ts#L102)

Gets a list of all class based handlers that have been registered

#### Returns

[`Handler`](Handler.md)<[`MessageBase`](../type-aliases/MessageBase.md), [`MessageAttributes`](../../bus-messages/interfaces/MessageAttributes.md)<[`MessageAttributeMap`](../../bus-messages/interfaces/MessageAttributeMap.md), [`MessageAttributeMap`](../../bus-messages/interfaces/MessageAttributeMap.md)>>\[]

***

### getExternallyManagedTopicIdentifiers()

```ts
getExternallyManagedTopicIdentifiers(): string[];
```

Defined in: [packages/bus-core/src/handler/handler-registry.ts:92](https://github.com/node-ts/bus/blob/2e6cf65c27833b707ae31ee623cfb6343770f434/packages/bus-core/src/handler/handler-registry.ts#L92)

Retrieves an array of all topic arns that are managed externally but require subscribing to as there are
custom handlers that handle those messages.

#### Returns

`string`\[]

***

### getMessageConstructor()

```ts
getMessageConstructor<TMessage>(messageName): 
  | ClassConstructor<TMessage>
  | undefined;
```

Defined in: [packages/bus-core/src/handler/handler-registry.ts:84](https://github.com/node-ts/bus/blob/2e6cf65c27833b707ae31ee623cfb6343770f434/packages/bus-core/src/handler/handler-registry.ts#L84)

Returns the class that received messages are created from, for a message that has a handler
registration. That's the message class, or `Object` for a message declared with `defineCommand`
or `defineEvent`, whose messages are plain objects.

#### Type Parameters

| Type Parameter |
| ------ |
| `TMessage` *extends* [`Message`](../../bus-messages/classes/Message.md) |

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `messageName` | `string` | Message to get a class constructor for |

#### Returns

| [`ClassConstructor`](../type-aliases/ClassConstructor.md)<`TMessage`>
| `undefined`

***

### getMessageNames()

```ts
getMessageNames(): string[];
```

Defined in: [packages/bus-core/src/handler/handler-registry.ts:76](https://github.com/node-ts/bus/blob/2e6cf65c27833b707ae31ee623cfb6343770f434/packages/bus-core/src/handler/handler-registry.ts#L76)

Retrieves a list of all messages that have handler registrations

#### Returns

`string`\[]

***

### getResolvers()

```ts
getResolvers(): HandlerResolver[];
```

Defined in: [packages/bus-core/src/handler/handler-registry.ts:97](https://github.com/node-ts/bus/blob/2e6cf65c27833b707ae31ee623cfb6343770f434/packages/bus-core/src/handler/handler-registry.ts#L97)

Gets all registered message handler resolvers

#### Returns

[`HandlerResolver`](HandlerResolver.md)\[]

***

### register()

```ts
register<TMessage>(messageType, handler): void;
```

Defined in: [packages/bus-core/src/handler/handler-registry.ts:54](https://github.com/node-ts/bus/blob/2e6cf65c27833b707ae31ee623cfb6343770f434/packages/bus-core/src/handler/handler-registry.ts#L54)

Registers that a function handles a particular message type. The message's name is read from the
static `NAME` of `messageType`, without constructing it.

#### Type Parameters

| Type Parameter |
| ------ |
| `TMessage` *extends* [`Message`](../../bus-messages/classes/Message.md) |

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `messageType` | [`MessageDeclaration`](../../bus-messages/type-aliases/MessageDeclaration.md)<`TMessage`> | The message class, or the definition from `defineCommand` or `defineEvent`, to handle |
| `handler` | [`HandlerDefinition`](../type-aliases/HandlerDefinition.md)<`TMessage`> | The function handler to dispatch messages to as they arrive |

#### Returns

`void`

#### Throws

MessageNameMissing if `messageType` has no static `NAME`

***

### registerCustom()

```ts
registerCustom<TMessage>(handler, customResolver): void;
```

Defined in: [packages/bus-core/src/handler/handler-registry.ts:59](https://github.com/node-ts/bus/blob/2e6cf65c27833b707ae31ee623cfb6343770f434/packages/bus-core/src/handler/handler-registry.ts#L59)

#### Type Parameters

| Type Parameter |
| ------ |
| `TMessage` *extends* [`MessageBase`](../type-aliases/MessageBase.md) |

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `handler` | [`HandlerDefinition`](../type-aliases/HandlerDefinition.md)<`TMessage`> |
| `customResolver` | [`CustomResolver`](CustomResolver.md)<`TMessage`> |

#### Returns

`void`

***

### reset()

```ts
reset(): void;
```

Defined in: [packages/bus-core/src/handler/handler-registry.ts:107](https://github.com/node-ts/bus/blob/2e6cf65c27833b707ae31ee623cfb6343770f434/packages/bus-core/src/handler/handler-registry.ts#L107)

Removes all handlers from the registry

#### Returns

`void`
