﻿# Message Handling Pipeline

<!-- Version variant: core_9; default: [/nservicebus/pipeline/index.md](/nservicebus/pipeline/index.md) -->


NServiceBus uses the concept of _pipelines_. A pipeline refers to the series of actions taken as a result of the triggering action.

For example:

* The incoming pipeline is triggered due to an incoming message
* The outgoing pipeline is triggered due to an outgoing message
* The [recoverability](/nservicebus/recoverability/index.md) pipeline is triggered due to failure during processing


## Pipeline customization

There are several ways to customize the pipelines with varying levels of complexity.

* [Manipulate the pipeline with behaviors](/nservicebus/pipeline/manipulate-with-behaviors.md)
* [Steps, stages and connectors](/nservicebus/pipeline/steps-stages-connectors.md)
* [Message mutators](/nservicebus/pipeline/message-mutators.md)
* [Abort the pipeline](/nservicebus/pipeline/aborting.md)
* [React to pipeline events](/nservicebus/pipeline/events.md)

Unit testing of custom extensions is supported by [the `NServiceBus.Testing` library](/nservicebus/testing/index.md#testing-a-behavior).
