Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 37 additions & 3 deletions nservicebus/platform-nuget-packages.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,35 @@
---
title: Platform NuGet packages
reviewed: 2024-12-27
summary: A curated list of NuGet packages commonly used to build a distributed system with NServiceBus and the Particular Service Platform
reviewed: 2026-07-31
related:
- nservicebus/upgrades/support-policy
- nservicebus/upgrades/supported-platforms
---

This page contains a curated list of NuGet packages commonly used to build a distributed system with NServiceBus and the Particular Service Platform.

Every endpoint references the core package, which provides the messaging, routing, and recoverability behavior that the other packages extend:

- [NServiceBus](https://www.nuget.org/packages/NServiceBus)

### Transports

The transport is the messaging infrastructure that carries messages between endpoints. Each endpoint is configured with one:

- [NServiceBus.Transport.AzureServiceBus](https://www.nuget.org/packages/NServiceBus.Transport.AzureServiceBus)
- [NServiceBus.Transport.AzureStorageQueues](https://www.nuget.org/packages/NServiceBus.Transport.AzureStorageQueues)
- [NServiceBus.AmazonSQS](https://www.nuget.org/packages/NServiceBus.AmazonSQS)
- [NServiceBus.RabbitMQ](https://www.nuget.org/packages/NServiceBus.RabbitMQ)
- [NServiceBus.Transport.SqlServer](https://www.nuget.org/packages/NServiceBus.Transport.SqlServer)
- [NServiceBus.Transport.PostgreSql](https://www.nuget.org/packages/NServiceBus.Transport.PostgreSql)
- [NServiceBus.Transport.Msmq](https://www.nuget.org/packages/NServiceBus.Transport.Msmq)
- [NServiceBus.Transport.IBMMQ](https://www.nuget.org/packages/NServiceBus.Transport.IBMMQ)

### Persistence

Persistence stores saga state and outbox data, and supplies subscription or delayed delivery storage for transports that have no native support for them. See [selecting a persister](/persistence/selecting.md) for help choosing:

- [NServiceBus.Persistence.Sql](https://www.nuget.org/packages/NServiceBus.Persistence.Sql)
- [NServiceBus.Persistence.CosmosDB](https://www.nuget.org/packages/NServiceBus.Persistence.CosmosDB)
- [NServiceBus.Persistence.DynamoDB](https://www.nuget.org/packages/NServiceBus.Persistence.DynamoDB)
Expand All @@ -33,17 +42,25 @@ This page contains a curated list of NuGet packages commonly used to build a dis

### Hosting

These packages integrate NServiceBus with a .NET generic host, a serverless platform, or the `Microsoft.Extensions` abstractions:

- [NServiceBus.Extensions.Hosting](https://www.nuget.org/packages/NServiceBus.Extensions.Hosting)
- [NServiceBus.Extensions.DependencyInjection](https://www.nuget.org/packages/NServiceBus.Extensions.DependencyInjection)
- [NServiceBus.Extensions.Logging](https://www.nuget.org/packages/NServiceBus.Extensions.Logging)
- [NServiceBus.AzureFunctions.InProcess.ServiceBus](https://www.nuget.org/packages/NServiceBus.AzureFunctions.InProcess.ServiceBus)
- [NServiceBus.AzureFunctions.Worker.ServiceBus](https://www.nuget.org/packages/NServiceBus.AzureFunctions.Worker.ServiceBus)
- [NServiceBus.AwsLambda.Sqs](https://www.nuget.org/packages/NServiceBus.AwsLambda.Sqs)

### Serialization

The serializer controls the wire format of message bodies. The System.Text.Json and XML serializers ship in the core package, so a separate package is only needed for another format:

- [NServiceBus.Newtonsoft.Json](https://www.nuget.org/packages/NServiceBus.Newtonsoft.Json)

### Monitoring

These packages send health, metrics, and audit data to ServiceControl, so that ServicePulse and ServiceInsight can report on the running system:

- [NServiceBus.Metrics](https://www.nuget.org/packages/NServiceBus.Metrics)
- [NServiceBus.Metrics.ServiceControl](https://www.nuget.org/packages/NServiceBus.Metrics.ServiceControl)
- [NServiceBus.Metrics.ServiceControl.Msmq](https://www.nuget.org/packages/NServiceBus.Metrics.ServiceControl.Msmq)
Expand All @@ -56,24 +73,41 @@ This page contains a curated list of NuGet packages commonly used to build a dis

### Interoperability

These packages connect endpoints to systems running on a different transport, on another messaging technology, or outside the platform entirely:

- [NServiceBus.MessagingBridge](https://www.nuget.org/packages/NServiceBus.MessagingBridge)
- [NServiceBus.Gateway](https://www.nuget.org/packages/NServiceBus.Gateway)
- [NServiceBus.Gateway.Sql](https://www.nuget.org/packages/NServiceBus.Gateway.Sql)
- [NServiceBus.Gateway.RavenDB](https://www.nuget.org/packages/NServiceBus.Gateway.RavenDB)
- [NServiceBus.Envelope.CloudEvents](https://www.nuget.org/packages/NServiceBus.Envelope.CloudEvents) (experimental)

### Other

Optional features that extend endpoint behavior. Packages nested below another package extend it and are chosen to match the persistence or storage already in use:

- [NServiceBus.Testing](https://www.nuget.org/packages/NServiceBus.Testing)
- [NServiceBus.Encryption.MessageProperty](https://www.nuget.org/packages/NServiceBus.Encryption.MessageProperty)
- [NServiceBus.TransactionalSession](https://www.nuget.org/packages/NServiceBus.TransactionalSession)
- [NServiceBus.Persistence.Sql.TransactionalSession](https://www.nuget.org/packages/NServiceBus.Persistence.Sql.TransactionalSession)
- [NServiceBus.Persistence.CosmosDB.TransactionalSession](https://www.nuget.org/packages/NServiceBus.Persistence.CosmosDB.TransactionalSession)
- [NServiceBus.Persistence.DynamoDB.TransactionalSession](https://www.nuget.org/packages/NServiceBus.Persistence.DynamoDB.TransactionalSession)
- [NServiceBus.Persistence.AzureTable.TransactionalSession](https://www.nuget.org/packages/NServiceBus.Persistence.AzureTable.TransactionalSession)
- [NServiceBus.Storage.MongoDB.TransactionalSession](https://www.nuget.org/packages/NServiceBus.Storage.MongoDB.TransactionalSession)
- [NServiceBus.RavenDB.TransactionalSession](https://www.nuget.org/packages/NServiceBus.RavenDB.TransactionalSession)
- [NServiceBus.NHibernate.TransactionalSession](https://www.nuget.org/packages/NServiceBus.NHibernate.TransactionalSession)
- [NServiceBus.Callbacks](https://www.nuget.org/packages/NServiceBus.Callbacks)
- [NServiceBus.DataBus.AzureBlobStorage](https://www.nuget.org/packages/NServiceBus.DataBus.AzureBlobStorage)
- [NServiceBus.DataBus.BinarySerializer](https://www.nuget.org/packages/NServiceBus.DataBus.BinarySerializer)
- [NServiceBus.Callbacks.Testing](https://www.nuget.org/packages/NServiceBus.Callbacks.Testing)
- [NServiceBus.ClaimCheck](https://www.nuget.org/packages/NServiceBus.ClaimCheck)
- [NServiceBus.DataBus.AzureBlobStorage](https://www.nuget.org/packages/NServiceBus.DataBus.AzureBlobStorage)
- [NServiceBus.DataBus.BinarySerializer](https://www.nuget.org/packages/NServiceBus.DataBus.BinarySerializer)
- [NServiceBus.UniformSession](https://www.nuget.org/packages/NServiceBus.UniformSession)
- [NServiceBus.UniformSession.Testing](https://www.nuget.org/packages/NServiceBus.UniformSession.Testing)
- [NServiceBus.Wcf](https://www.nuget.org/packages/NServiceBus.Wcf)
- [Particular.Aspire.Hosting.ServicePlatform](https://www.nuget.org/packages/Particular.Aspire.Hosting.ServicePlatform)

### Tooling packages

These ship as .NET command-line tools for one-off migrations, rather than as packages referenced by an endpoint:

- [Particular.TimeoutMigration](https://www.nuget.org/packages/Particular.TimeoutMigration)
- [Particular.AzureTable.Export](https://www.nuget.org/packages/Particular.AzureTable.Export)
7 changes: 4 additions & 3 deletions persistence/upgrades/sql-client4.include.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
Version 4 of `Microsoft.Data.SqlClient` includes [a breaking change](https://github.com/dotnet/SqlClient/pull/1210) which sets `Encrypt=True` by default. If the client and server are not configured with a valid certificate, this can cause an exception at startup:
`Microsoft.Data.SqlClient` requires an encrypted connection by default and validates the certificate presented by SQL Server. If the server is not configured with a valid certificate, or the machine hosting the endpoint does not trust that certificate, this can cause an exception at startup:

```txt
System.Data.SqlClient.SqlException
Microsoft.Data.SqlClient.SqlException
HResult=0x80131904
Message=A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - The certificate chain was issued by an authority that is not trusted.)
Source=.Net SqlClient Data Provider
```

Requiring encryption has been the default since version 4, which [changed the `Encrypt` default from `False` to `True`](https://github.com/dotnet/SqlClient/pull/1210). Endpoints that connected without encryption before upgrading to version 4 or later will encounter this exception.

To fix this, [update the SQL Server installation with a valid certificate](https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/configure-sql-server-encryption) and [configure the machine hosting the endpoint to trust that certificate](https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/special-cases-for-encrypting-connections-sql-server).

> [!WARNING]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@
<ItemGroup>
<PackageReference Include="NHibernate" Version="5.*" />
<PackageReference Include="NServiceBus.NHibernate" Version="11.*" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="6.1.0-preview2.25178.5" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="6.*" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@
<ItemGroup>
<PackageReference Include="NHibernate" Version="5.*" />
<PackageReference Include="NServiceBus.NHibernate" Version="11.*" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="6.1.0-preview2.25178.5" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="6.*" />
</ItemGroup>
</Project>
8 changes: 5 additions & 3 deletions samples/nhibernate/custom-mappings/sample.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: NServiceBus.NHibernate custom saga mapping sample
summary: An NServiceBus sample demonstrating a custom saga mapping to change how NHibernate creates the database schema using different techniques.
reviewed: 2024-12-28
reviewed: 2026-07-31
component: NHibernate
related:
- persistence/nhibernate
Expand All @@ -28,7 +28,9 @@ When using a custom mapping, ensure a unique index exists for every column refer

## Prerequisites

This sample requires an instance of SQL Server at `.\SqlExpress` and the database `Samples.CustomNhMappings` to run correctly.
This sample requires an instance of SQL Server and a database named `Samples.CustomNhMappings`. The database must already exist, as the endpoint creates only the tables it needs.

Each project connects to `localhost,1433` using SQL Server authentication. To run against SQL Server Express instead, use the `.\SqlExpress` connection string shown in the comment directly above the `connectionString` variable in each project's `Program.cs`.

## Custom .hbm.xml mapping

Expand All @@ -50,7 +52,7 @@ snippet: AddMappingsFromFilesystem

## Use Fluent NHibernate

[Fluent NHibernate](http://www.fluentnhibernate.org) provides a type-safe mapping approach where the mapping is specified in code (not as `.hbm.xml`), but the mapping is still separate from the classes. The benefit of this approach is the compile-time feedback provided when a mapping is invalid.
[Fluent NHibernate](https://fluentnhibernate.org) provides a type-safe mapping approach where the mapping is specified in code (not as `.hbm.xml`), but the mapping is still separate from the classes. The benefit of this approach is the compile-time feedback provided when a mapping is invalid.

To use it with NServiceBus:

Expand Down
4 changes: 3 additions & 1 deletion transports/rabbitmq/operations-scripting.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
---
title: RabbitMQ Transport Scripting
summary: Example code and scripts to facilitate deployment and operational actions against RabbitMQ.
reviewed: 2024-12-13
reviewed: 2026-07-31
component: Rabbit
related:
- nservicebus/operations
- transports/rabbitmq/delayed-delivery
- transports/rabbitmq/routing-topology
redirects:
- nservicebus/rabbitmq/operations-scripting
---
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Example code and scripts to facilitate deployment and operational actions agains

These samples use the [RabbitMQ.Client NuGet Package](https://www.nuget.org/packages/RabbitMQ.Client/).

Since the RabbitMQ.Client is not [CLS Compliant](https://msdn.microsoft.com/en-us/library/system.clscompliantattribute.aspx) it is not possible to run this code within PowerShell.
Since the RabbitMQ.Client is not [CLS Compliant](https://learn.microsoft.com/en-us/dotnet/api/system.clscompliantattribute) it is not possible to run this code within PowerShell.

## Native Send

Expand Down Expand Up @@ -63,7 +63,7 @@ snippet: rabbit-create-queues-shared-usage

## Create HA policy

To configure HA policy, refer to the [RabbitMQ HA documentation](https://www.rabbitmq.com/ha.html).
To configure HA policy, refer to the [RabbitMQ HA documentation](https://www.rabbitmq.com/docs/3.13/ha).

## Delete queues

Expand Down
Loading