> ## Documentation Index
> Fetch the complete documentation index at: https://easyaf.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# IMessageDispatcher

> Defines the required composition of every Dispatcher used by SimpleMessageBus to send [MessageEnvelope](/simplemessagebus/api-reference/CloudNimble/SimpleMessageBus/Core/Mess...

## Definition

**Assembly:** CloudNimble.SimpleMessageBus.Dispatch.dll

**Namespace:** CloudNimble.SimpleMessageBus.Dispatch

## Syntax

```csharp theme={"dark"}
CloudNimble.SimpleMessageBus.Dispatch.IMessageDispatcher
```

## Summary

Defines the required composition of every Dispatcher used by SimpleMessageBus to send [MessageEnvelope](/api-reference/CloudNimble/SimpleMessageBus/Core/MessageEnvelope)MessageEnvelopes\</see> to the
[IMessageHandler](/simplemessagebus/api-reference/CloudNimble/SimpleMessageBus/Core/IMessageHandler)IMessageHandlers\</see> registered to handle that message's [Type](/simplemessagebus/api-reference/System/Type).

## Remarks

Message dispatchers control how messages are delivered to their handlers. SimpleMessageBus provides two built-in
implementations: [OrderedMessageDispatcher](/simplemessagebus/api-reference/CloudNimble/SimpleMessageBus/Dispatch/OrderedMessageDispatcher) for sequential processing and [ParallelMessageDispatcher](/simplemessagebus/api-reference/CloudNimble/SimpleMessageBus/Dispatch/ParallelMessageDispatcher)
for concurrent processing. Custom dispatchers can be implemented for specialized routing or processing logic.

## Methods

### <Icon icon="function" iconType="duotone" color="#419AC5" size={24} className="mr-2" /> Dispatch <Badge color="orange">Abstract</Badge>

Dispatches an incoming [MessageEnvelope](/simplemessagebus/api-reference/CloudNimble/SimpleMessageBus/Core/MessageEnvelope) to the [IMessageHandler](/simplemessagebus/api-reference/CloudNimble/SimpleMessageBus/Core/IMessageHandler)IMessageHandlers\</see> registered to handle that message's [Type](/simplemessagebus/api-reference/System/Type).

#### Syntax

```csharp theme={"dark"}
System.Threading.Tasks.Task Dispatch(CloudNimble.SimpleMessageBus.Core.MessageEnvelope messageEnvelope)
```

#### Parameters

| Name              | Type                                                | Description                                                                                                                                                                                                                                                              |
| ----------------- | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `messageEnvelope` | `CloudNimble.SimpleMessageBus.Core.MessageEnvelope` | The [MessageEnvelope](/simplemessagebus/api-reference/CloudNimble/SimpleMessageBus/Core/MessageEnvelope) instance to send to the registered [IMessageHandler](/simplemessagebus/api-reference/CloudNimble/SimpleMessageBus/Core/IMessageHandler)IMessageHandlers\</see>. |

#### Returns

Type: `System.Threading.Tasks.Task`
A [Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task) reference for the asynchronous function.

#### Remarks

The implementation determines how handlers are invoked - sequentially, in parallel, or using custom logic.
All matching handlers (those that declare support for the message type) will be called.
