diff --git a/nservicebus/platform-nuget-packages.md b/nservicebus/platform-nuget-packages.md
index d6f896273d2..0aa1d0ef8b2 100644
--- a/nservicebus/platform-nuget-packages.md
+++ b/nservicebus/platform-nuget-packages.md
@@ -1,6 +1,7 @@
---
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
@@ -8,19 +9,27 @@ related:
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)
@@ -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)
@@ -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)
diff --git a/persistence/upgrades/sql-client4.include.md b/persistence/upgrades/sql-client4.include.md
index c18362a9257..0d3121ca2e6 100644
--- a/persistence/upgrades/sql-client4.include.md
+++ b/persistence/upgrades/sql-client4.include.md
@@ -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]
diff --git a/samples/nhibernate/custom-mappings/NHibernate_11/Sample.Default/Sample.Default.csproj b/samples/nhibernate/custom-mappings/NHibernate_11/Sample.Default/Sample.Default.csproj
index a143ee381bc..b0f4fd32d64 100644
--- a/samples/nhibernate/custom-mappings/NHibernate_11/Sample.Default/Sample.Default.csproj
+++ b/samples/nhibernate/custom-mappings/NHibernate_11/Sample.Default/Sample.Default.csproj
@@ -10,6 +10,6 @@
-
+
\ No newline at end of file
diff --git a/samples/nhibernate/custom-mappings/NHibernate_11/Sample.Loquacious/Sample.Loquacious.csproj b/samples/nhibernate/custom-mappings/NHibernate_11/Sample.Loquacious/Sample.Loquacious.csproj
index a143ee381bc..b0f4fd32d64 100644
--- a/samples/nhibernate/custom-mappings/NHibernate_11/Sample.Loquacious/Sample.Loquacious.csproj
+++ b/samples/nhibernate/custom-mappings/NHibernate_11/Sample.Loquacious/Sample.Loquacious.csproj
@@ -10,6 +10,6 @@
-
+
\ No newline at end of file
diff --git a/samples/nhibernate/custom-mappings/sample.md b/samples/nhibernate/custom-mappings/sample.md
index 191cecdebde..5625414e0a6 100644
--- a/samples/nhibernate/custom-mappings/sample.md
+++ b/samples/nhibernate/custom-mappings/sample.md
@@ -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
@@ -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
@@ -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:
diff --git a/transports/rabbitmq/operations-scripting.md b/transports/rabbitmq/operations-scripting.md
index 300a7cbe8c5..d7f5f395784 100644
--- a/transports/rabbitmq/operations-scripting.md
+++ b/transports/rabbitmq/operations-scripting.md
@@ -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
---
diff --git a/transports/rabbitmq/operations-scripting_content_rabbit_[,7).partial.md b/transports/rabbitmq/operations-scripting_content_rabbit_[,7).partial.md
index d6dfb8b9953..3dafc72b1a1 100644
--- a/transports/rabbitmq/operations-scripting_content_rabbit_[,7).partial.md
+++ b/transports/rabbitmq/operations-scripting_content_rabbit_[,7).partial.md
@@ -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
@@ -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
diff --git a/transports/rabbitmq/operations-scripting_content_rabbit_[10,11).partial.md b/transports/rabbitmq/operations-scripting_content_rabbit_[10,11).partial.md
index 95f54ad2758..325d661e71d 100644
--- a/transports/rabbitmq/operations-scripting_content_rabbit_[10,11).partial.md
+++ b/transports/rabbitmq/operations-scripting_content_rabbit_[10,11).partial.md
@@ -2,7 +2,7 @@ In order to provision or de-provision the resources required by an endpoint, the
The tool can be obtained from NuGet and installed using the following command:
-```
+```bash
dotnet tool install -g NServiceBus.Transport.RabbitMQ.CommandLine
```
@@ -19,138 +19,148 @@ Once installed, the `rabbitmq-transport` command line tool will be available for
- [`queue migrate-to-quorum`](#queue-migrate-to-quorum)
- [`queue validate-delivery-limit`](#queue-validate-delivery-limit)
+### Common options
+
+Every command connects to a broker using a connection string. See [connection settings](connection-settings.md) for the supported connection string formats.
+
+Every command also verifies broker requirements before doing any work, which requires access to the RabbitMQ management API. By default the settings for that access are inferred from the connection string. See [configuring RabbitMQ management API access](connection-settings.md#configuring-rabbitmq-management-api-access) for the plugin and connectivity requirements.
+
+Every command accepts the following options:
+
+`--connectionString` | `-c` : Force this command to use the specified connection string
+
+`--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option. Default: `RabbitMQTransport_ConnectionString`
+
+`--managementApiUrl` : Overrides the value inferred from the connection string
+
+`--managementApiUserName` : Overrides the value inferred from the connection string. If provided, the `--managementApiPassword` option must also be provided or this option will be ignored
+
+`--managementApiPassword` : Overrides the value inferred from the connection string. If provided, the `--managementApiUserName` option must also be provided or this option will be ignored
+
+`--disableCertValidation` : Disable remote certificate validation when connecting to the broker
+
+The commands that open an AMQP connection to the broker ([`delays create`](#delays-create), [`delays migrate`](#delays-migrate), [`endpoint create`](#endpoint-create), and [`queue migrate-to-quorum`](#queue-migrate-to-quorum)) also accept:
+
+`--certPath` : The path to the client certificate file for connecting to the broker
+
+`--certPassphrase` : The passphrase for the client certificate file specified by the `certPath` option
+
+`--useExternalAuth` : Use the external authorization option when connecting to the broker
+
### `delays create`
Use this command to create v2 delay infrastructure queues and exchanges:
-```
+```bash
rabbitmq-transport delays create [options]
```
-#### Options
-
-`--connectionString` | `-c` : Force this command to use the specified connection string
-`--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option
-`--managementApiUrl` : Overrides the value inferred from the connection string
-`--managementApiUserName` : Overrides the value inferred from the connection string. If provided, the `--managementApiPassword` option must also be provided or this option will be ignored.
-`--managementApiPassword` : Overrides the value inferred from the connection string. If provided, the `--managementApiUserName` option must also be provided or this option will be ignored
-`--certPath`: The path to the client certificate file for connecting to the broker
-`--certPassphrase`: The passphrase for the client certificate file specified by the `certPath` option
-`--disableCertValidation`: Disable remote certificate validation when connecting to the broker
-`--useExternalAuth`: Use the external authorization option when connecting to the broker
+This command takes only the [common options](#common-options).
### `delays migrate`
Use this command to migrate in-flight delayed messages from the v1 delay infrastructure to the v2 delay infrastructure:
-```
+```bash
rabbitmq-transport delays migrate [options]
```
+Both infrastructures live on the same broker, so this command uses a single connection string.
+
+> [!NOTE]
+> Before running this command, the broker must have the v2 delay infrastructure in place. Use the [`delays create`](#delays-create) command to set it up:
+>
+> ```bash
+> rabbitmq-transport delays create --connectionString "amqp://user:pass@host"
+> ```
+
+Messages that are missing the headers needed to calculate a new delivery time cannot be migrated. The command moves them to a `delays-migrate-poison-messages` queue on the same broker so that they can be inspected and handled separately.
+
#### Options
-`--connectionString` | `-c` : Force this command to use the specified connection string
-`--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option
-`--managementApiUrl` : Overrides the value inferred from the connection string
-`--managementApiUserName` : Overrides the value inferred from the connection string. If provided, the `--managementApiPassword` option must also be provided or this option will be ignored.
-`--managementApiPassword` : Overrides the value inferred from the connection string. If provided, the `--managementApiUserName` option must also be provided or this option will be ignored
-`--certPath`: The path to the client certificate file for connecting to the broker
-`--certPassphrase`: The passphrase for the client certificate file specified by the `certPath` option
-`--disableCertValidation`: Disable remote certificate validation when connecting to the broker
-`--useExternalAuth`: Use the external authorization option when connecting to the broker
-`--routingTopology` | `-r` : The routing topology to use
+In addition to the [common options](#common-options):
+
+`--routingTopology` | `-r` : The routing topology to use. Valid values are `Conventional` and `Direct`. Default: `Conventional`
### `delays verify`
Use this command to verify broker requirements for using the v2 delay infrastructure:
-```
+```bash
rabbitmq-transport delays verify [options]
```
-#### Options
+The command checks that the broker is at least version 3.10.0 and that the `stream_queue` feature flag is enabled, then reports either `All checks OK` or the first requirement that was not met. Use it to confirm a broker is suitable before provisioning anything on it.
-`--connectionString` | `-c` : Force this command to use the specified connection string
-`--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option
-`--managementApiUrl` : Overrides the value inferred from the connection string
-`--managementApiUserName` : Overrides the value inferred from the connection string. If provided, the `--managementApiPassword` option must also be provided or this option will be ignored
-`--managementApiPassword` : Overrides the value inferred from the connection string. If provided, the `--managementApiUserName` option must also be provided or this option will be ignored
-`--disableCertValidation`: Disable remote certificate validation when connecting to the broker
+This command takes only the [common options](#common-options).
### `endpoint create`
Use this command to create queues and exchanges for an endpoint:
-```
+```bash
rabbitmq-transport endpoint create [options]
```
+> [!NOTE]
+> This command requires the v2 delay infrastructure to already exist on the broker and fails if it does not. Run the [`delays create`](#delays-create) command first.
+
#### Arguments
`endpointName` : The name of the endpoint to create
#### Options
-`--connectionString` | `-c` : Force this command to use the specified connection string
-`--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option
-`--managementApiUrl` : Overrides the value inferred from the connection string
-`--managementApiUserName` : Overrides the value inferred from the connection string. If provided, the `--managementApiPassword` option must also be provided or this option will be ignored
-`--managementApiPassword` : Overrides the value inferred from the connection string. If provided, the `--managementApiUserName` option must also be provided or this option will be ignored
-`--certPath`: Set the path to the client certificate file for connecting to the broker
-`--certPassphrase`: The passphrase for client certificate file for when using a client certificate
-`--disableCertValidation`: Disable remote certificate validation when connecting to the broker
-`--useExternalAuth`: Use the external authorization option when connecting to the broker
-`--routingTopology` | `-r` : Specifies which routing topology to use
-`--useDurableEntities` | `-d` : Specifies if entities should be created as durable
-`--queueType` | `-t` : Specifies queue type will be used for queue creation
-`--errorQueueName`: Also create an error queue with the specified name
-`--auditQueueName`: Also create an audit queue with the specified name
-`--instanceDiscriminators`: An optional list of instance discriminators to use when the endpoint needs uniquely addressable instances
+In addition to the [common options](#common-options):
+
+`--routingTopology` | `-r` : Specifies which [routing topology](routing-topology.md) to use. Valid values are `Conventional` and `Direct`. Default: `Conventional`
+
+`--useDurableEntities` | `-d` : Specifies if entities should be created as durable. Default: `true`
+
+`--queueType` | `-t` : Specifies the [queue type](routing-topology.md#controlling-queue-type) to use for queue creation. Valid values are `Classic` and `Quorum`. Default: `Quorum`
+
+`--errorQueueName` : Also create an error queue with the specified name
+
+`--auditQueueName` : Also create an audit queue with the specified name
+
+`--instanceDiscriminators` : An optional list of instance discriminators to use when the endpoint needs uniquely addressable instances
### `queue migrate-to-quorum`
Use this command to migrate an existing classic queue to a quorum queue.
-```
+```bash
rabbitmq-transport queue migrate-to-quorum [options]
```
> [!NOTE]
> The migration command does not work with queues created by endpoints using the direct routing topology.
+The migration moves the existing messages to a temporary holding queue, recreates the queue as a quorum queue, and then moves the messages back. If the command fails part way through, run it again: it detects the stage the previous run reached and continues from there.
+
#### Arguments
`queueName` : The name of the classic queue to migrate to a quorum queue
#### Options
-`--connectionString` | `-c` : Force this command to use the specified connection string
-`--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option
-`--managementApiUrl` : Overrides the value inferred from the connection string
-`--managementApiUserName` : Overrides the value inferred from the connection string. If provided, the `--managementApiPassword` option must also be provided or this option will be ignored
-`--managementApiPassword` : Overrides the value inferred from the connection string. If provided, the `--managementApiUserName` option must also be provided or this option will be ignored
-`--certPath`: Set the path to the client certificate file for connecting to the broker
-`--certPassphrase`: The passphrase for client certificate file for when using a client certificate
-`--disableCertValidation`: The passphrase for client certificate file for when using a client certificate
-`--useExternalAuth`: Use the external authorization option when connecting to the broker
+This command takes only the [common options](#common-options).
### `queue validate-delivery-limit`
Use this command to validate that a queue is correctly configured to have an unlimited delivery limit, and attempt to create a policy if it is not.
-```
+```bash
rabbitmq-transport queue validate-delivery-limit [options]
```
+> [!NOTE]
+> The credentials used for the management API need [policymaker permissions](https://www.rabbitmq.com/docs/management#permissions) to create the policy, and creating it requires RabbitMQ version 4.0 or above. See [delivery limit validation](connection-settings.md#delivery-limit-validation) for background on why the limit matters.
+
#### Arguments
`queueName` : The name of the queue to validate
#### Options
-`--connectionString` | `-c` : Force this command to use the specified connection string
-`--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option
-`--managementApiUrl` : Overrides the value inferred from the connection string
-`--managementApiUserName` : Overrides the value inferred from the connection string. If provided, the `--managementApiPassword` option must also be provided or this option will be ignored
-`--managementApiPassword` : Overrides the value inferred from the connection string. If provided, the `--managementApiUserName` option must also be provided or this option will be ignored
-`--disableCertValidation`: The passphrase for client certificate file for when using a client certificate
\ No newline at end of file
+This command takes only the [common options](#common-options).
diff --git a/transports/rabbitmq/operations-scripting_content_rabbit_[11,).partial.md b/transports/rabbitmq/operations-scripting_content_rabbit_[11,).partial.md
index 3b00e0d1c2a..862f0e846ff 100644
--- a/transports/rabbitmq/operations-scripting_content_rabbit_[11,).partial.md
+++ b/transports/rabbitmq/operations-scripting_content_rabbit_[11,).partial.md
@@ -2,7 +2,7 @@ In order to provision or de-provision the resources required by an endpoint, the
The tool can be obtained from NuGet and installed using the following command:
-```
+```bash
dotnet tool install -g NServiceBus.Transport.RabbitMQ.CommandLine
```
@@ -20,83 +20,87 @@ Once installed, the `rabbitmq-transport` command line tool will be available for
- [`queue migrate-to-quorum`](#queue-migrate-to-quorum)
- [`queue validate-delivery-limit`](#queue-validate-delivery-limit)
-### `delays create`
+### Common options
-Use this command to create v2 delay infrastructure queues and exchanges:
+Every command connects to a broker using a connection string. See [connection settings](connection-settings.md) for the supported connection string formats.
-```
-rabbitmq-transport delays create [options]
-```
+Every command also verifies broker requirements before doing any work, which requires access to the RabbitMQ management API. By default the settings for that access are inferred from the connection string. See [configuring RabbitMQ management API access](connection-settings.md#configuring-rabbitmq-management-api-access) for the plugin and connectivity requirements.
-#### Options
+The following options are accepted by every command except [`delays transfer`](#delays-transfer), which connects to two brokers and takes `--source`- and `--destination`-prefixed equivalents listed with that command:
- `--connectionString` | `-c` : Force this command to use the specified connection string
+`--connectionString` | `-c` : Force this command to use the specified connection string
- `--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option
+`--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option. Default: `RabbitMQTransport_ConnectionString`
- `--managementApiUrl` : Overrides the value inferred from the connection string
+`--managementApiUrl` : Overrides the value inferred from the connection string
- `--managementApiUserName` : Overrides the value inferred from the connection string. If provided, the `--managementApiPassword` option must also be provided or this option will be ignored
+`--managementApiUserName` : Overrides the value inferred from the connection string. If provided, the `--managementApiPassword` option must also be provided or this option will be ignored
- `--managementApiPassword` : Overrides the value inferred from the connection string. If provided, the `--managementApiUserName` option must also be provided or this option will be ignored
+`--managementApiPassword` : Overrides the value inferred from the connection string. If provided, the `--managementApiUserName` option must also be provided or this option will be ignored
- `--certPath`: The path to the client certificate file for connecting to the broker
+The commands that open an AMQP connection to the broker ([`delays create`](#delays-create), [`delays migrate`](#delays-migrate), [`endpoint create`](#endpoint-create), and [`queue migrate-to-quorum`](#queue-migrate-to-quorum)) also accept:
- `--certPassphrase`: The passphrase for the client certificate file specified by the `certPath` option
+`--certPath` : The path to the client certificate file for connecting to the broker
- `--useExternalAuth`: Use the external authorization option when connecting to the broker
+`--certPassphrase` : The passphrase for the client certificate file specified by the `certPath` option
- `--disableCertValidation`: Disable remote certificate validation when connecting to the broker
+`--useExternalAuth` : Use the external authorization option when connecting to the broker
-### `delays migrate`
+Every command, including `delays transfer`, accepts:
-Use this command to migrate in-flight delayed messages from the v1 delay infrastructure to the v2 delay infrastructure:
+`--disableCertValidation` : Disable remote certificate validation when connecting to the broker
-```
-rabbitmq-transport delays migrate [options]
-```
+### `delays create`
-#### Options
+Use this command to create v2 delay infrastructure queues and exchanges:
-`--connectionString` | `-c` : Force this command to use the specified connection string
+```bash
+rabbitmq-transport delays create [options]
+```
-`--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option
+This command takes only the [common options](#common-options).
-`--managementApiUrl` : Overrides the value inferred from the connection string
+### `delays migrate`
-`--managementApiUserName` : Overrides the value inferred from the connection string. If provided, the `--managementApiPassword` option must also be provided or this option will be ignored
+Use this command to migrate in-flight delayed messages from the v1 delay infrastructure to the v2 delay infrastructure:
-`--managementApiPassword` : Overrides the value inferred from the connection string. If provided, the `--managementApiUserName` option must also be provided or this option will be ignored
+```bash
+rabbitmq-transport delays migrate [options]
+```
-`--certPath`: The path to the client certificate file for connecting to the broker
+Both infrastructures live on the same broker, so this command uses a single connection string.
-`--certPassphrase`: The passphrase for the client certificate file specified by the `certPath` option
+> [!NOTE]
+> Before running this command, the broker must have the v2 delay infrastructure in place. Use the [`delays create`](#delays-create) command to set it up:
+>
+> ```bash
+> rabbitmq-transport delays create --connectionString "amqp://user:pass@host"
+> ```
-`--useExternalAuth`: Use the external authorization option when connecting to the broker
+Messages that are missing the headers needed to calculate a new delivery time cannot be migrated. The command moves them to a `delays-migrate-poison-messages` queue on the same broker so that they can be inspected and handled separately.
-`--disableCertValidation`: Disable remote certificate validation when connecting to the broker
+#### Options
-`--routingTopology` | `-r` : The routing topology to use
+In addition to the [common options](#common-options):
-> [!NOTE]
-> Before running this command, the destination broker must have the v2 delay infrastructure in place. Use the [`delays create`](#delays-create) command to set it up:
->
-> ```
-> rabbitmq-transport delays create --connectionString "amqp://user:pass@destination-host"
-> ```
+`--routingTopology` | `-r` : The routing topology to use. Valid values are `Conventional` and `Direct`. Default: `Conventional`
### `delays transfer`
Use this command to transfer delayed messages from one broker to another:
-```
+```bash
rabbitmq-transport delays transfer [options]
```
+
+> [!NOTE]
+> This command is available starting from version 11.2.
+
#### Options
`--sourceConnectionString` : Force this command to use the specified connection string for the source broker
-`--sourceConnectionStringEnv` : Specifies the environment variable where the connection string for the source broker can be found.`--sourceConnectionString`, if specified, will take precedence over this option
+`--sourceConnectionStringEnv` : Specifies the environment variable where the connection string for the source broker can be found. `--sourceConnectionString`, if specified, will take precedence over this option. Default: `RabbitMQTransport_Source_ConnectionString`
`--sourceManagementApiUrl` : Overrides the value inferred from the connection string for the source broker
@@ -104,15 +108,15 @@ rabbitmq-transport delays transfer [options]
`--sourceManagementApiPassword` : Overrides the value inferred from the connection string for the source broker. If provided, `--sourceManagementApiUserName` must also be provided or this option will be ignored
-`--sourceCertPath` : Set the path to the client certificate file for connecting to the source broker
+`--sourceCertPath` : The path to the client certificate file for connecting to the source broker
-`--sourceCertPassphrase` : The passphrase for the client certificate file when using a client certificate to connect to the source broker
+`--sourceCertPassphrase` : The passphrase for the client certificate file specified by the `sourceCertPath` option
`--sourceUseExternalAuth` : Use the external authorization option when connecting to the source broker
`--destinationConnectionString` : Force this command to use the specified connection string for the destination broker
-`--destinationConnectionStringEnv`: Specifies the environment variable where the connection string for the destination broker can be found. `--destinationConnectionString`, if specified, will take precedence over this option.
+`--destinationConnectionStringEnv` : Specifies the environment variable where the connection string for the destination broker can be found. `--destinationConnectionString`, if specified, will take precedence over this option. Default: `RabbitMQTransport_Destination_ConnectionString`
`--destinationManagementApiUrl` : Overrides the value inferred from the connection string for the destination broker
@@ -120,33 +124,35 @@ rabbitmq-transport delays transfer [options]
`--destinationManagementApiPassword` : Overrides the value inferred from the connection string for the destination broker. If provided, `--destinationManagementApiUserName` must also be provided or this option will be ignored
-`--destinationCertPath` : Set the path to the client certificate file for connecting to the destination broker
+`--destinationCertPath` : The path to the client certificate file for connecting to the destination broker
-`--destinationCertPassphrase` : The passphrase for the client certificate file when using a client certificate to connect to the destination broker
+`--destinationCertPassphrase` : The passphrase for the client certificate file specified by the `destinationCertPath` option
`--destinationUseExternalAuth` : Use the external authorization option when connecting to the destination broker
-`--disableCertValidation` : Disable remote certificate validation when connecting to the broker
+`--disableCertValidation` : Disable remote certificate validation when connecting to either broker
-`--routingTopology` | `-r` : The routing topology to use
+`--routingTopology` | `-r` : The routing topology to use. Valid values are `Conventional` and `Direct`. Default: `Conventional`
> [!NOTE]
> Before running this command, the destination broker must have the v2 delay infrastructure in place. Use the [`delays create`](#delays-create) command to set it up:
>
-> ```
+> ```bash
> rabbitmq-transport delays create --connectionString "amqp://user:pass@destination-host"
> ```
> [!NOTE]
> All exchanges and queues that exist on the source broker must also exist on the destination broker before running this command. Use the [`endpoint create`](#endpoint-create) command for each endpoint:
>
-> ```
+> ```bash
> rabbitmq-transport endpoint create --connectionString "amqp://user:pass@destination-host"
> ```
+Messages that are missing the headers needed to calculate a new delivery time cannot be transferred. The command moves them to a `delays-transfer-poison-messages` queue on the source broker so that they can be inspected and handled separately.
+
#### Usage example
-```
+```bash
rabbitmq-transport delays transfer --sourceConnectionString "amqp://user:pass@source-host" --destinationConnectionString "amqp://user:pass@destination-host"
```
@@ -154,125 +160,81 @@ rabbitmq-transport delays transfer --sourceConnectionString "amqp://user:pass@so
Use this command to verify broker requirements for using the v2 delay infrastructure:
-```
+```bash
rabbitmq-transport delays verify [options]
```
-#### Options
+The command checks that the broker is at least version 3.10.0 and that the `stream_queue` feature flag is enabled, then reports either `All checks OK` or the first requirement that was not met. Use it to confirm a broker is suitable before provisioning anything on it.
-`--connectionString` | `-c` : Force this command to use the specified connection string
-
-`--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option
-
-`--managementApiUrl` : Overrides the value inferred from the connection string
-
-`--managementApiUserName` : Overrides the value inferred from the connection string. If provided, the `--managementApiPassword` option must also be provided or this option will be ignored
-
-`--managementApiPassword` : Overrides the value inferred from the connection string. If provided, the `--managementApiUserName` option must also be provided or this option will be ignored
-
-`--disableCertValidation`: Disable remote certificate validation when connecting to the broker
+This command takes only the [common options](#common-options).
### `endpoint create`
Use this command to create queues and exchanges for an endpoint:
-```
+```bash
rabbitmq-transport endpoint create [options]
```
+> [!NOTE]
+> This command requires the v2 delay infrastructure to already exist on the broker and fails if it does not. Run the [`delays create`](#delays-create) command first.
+
#### Arguments
`endpointName` : The name of the endpoint to create
#### Options
-`--connectionString` | `-c` : Force this command to use the specified connection string
+In addition to the [common options](#common-options):
-`--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option
+`--routingTopology` | `-r` : Specifies which [routing topology](routing-topology.md) to use. Valid values are `Conventional` and `Direct`. Default: `Conventional`
-`--managementApiUrl` : Overrides the value inferred from the connection string
-
-`--managementApiUserName` : Overrides the value inferred from the connection string. If provided, the `--managementApiPassword` option must also be provided or this option will be ignored
-
-`--managementApiPassword` : Overrides the value inferred from the connection string. If provided, the `--managementApiUserName` option must also be provided or this option will be ignored
-
-`--certPath`: Set the path to the client certificate file for connecting to the broker
+`--useDurableEntities` | `-d` : Specifies if entities should be created as durable. Default: `true`
-`--certPassphrase`: The passphrase for the client certificate file when using a client certificate
+`--queueType` | `-t` : Specifies the [queue type](routing-topology.md#controlling-queue-type) to use for queue creation. Valid values are `Classic` and `Quorum`. Default: `Quorum`
-`--useExternalAuth`: Use the external authorization option when connecting to the broker
+`--errorQueueName` : Also create an error queue with the specified name
-`--disableCertValidation`: Disable remote certificate validation when connecting to the broker
+`--auditQueueName` : Also create an audit queue with the specified name
-`--routingTopology` | `-r` : Specifies which routing topology to use
-
-`--useDurableEntities` | `-d` : Specifies if entities should be created as durable
-
-`--queueType` | `-t` : Specifies queue type will be used for queue creation
-
-`--errorQueueName`: Also create an error queue with the specified name
-
-`--auditQueueName`: Also create an audit queue with the specified name
-
-`--instanceDiscriminators`: An optional list of instance discriminators to use when the endpoint needs uniquely addressable instances
+`--instanceDiscriminators` : An optional list of instance discriminators to use when the endpoint needs uniquely addressable instances
### `queue migrate-to-quorum`
Use this command to migrate an existing classic queue to a quorum queue.
-```
+```bash
rabbitmq-transport queue migrate-to-quorum [options]
```
> [!NOTE]
> The migration command does not work with queues created by endpoints using the direct routing topology.
+The migration moves the existing messages to a temporary holding queue, recreates the queue as a quorum queue, and then moves the messages back. If the command fails part way through, run it again: it detects the stage the previous run reached and continues from there.
+
#### Arguments
`queueName` : The name of the classic queue to migrate to a quorum queue
#### Options
-`--connectionString` | `-c` : Force this command to use the specified connection string
-
-`--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option
-
-`--managementApiUrl` : Overrides the value inferred from the connection string
-
-`--managementApiUserName` : Overrides the value inferred from the connection string. If provided, the `--managementApiPassword` option must also be provided or this option will be ignored
-
-`--managementApiPassword` : Overrides the value inferred from the connection string. If provided, the `--managementApiUserName` option must also be provided or this option will be ignored
-
-`--certPath`: Set the path to the client certificate file for connecting to the broker
-
-`--certPassphrase`: The passphrase for the client certificate file when using a client certificate
-
-`--useExternalAuth`: Use the external authorization option when connecting to the broker
-
-`--disableCertValidation`: The passphrase for client certificate file for when using a client certificate
+This command takes only the [common options](#common-options).
### `queue validate-delivery-limit`
Use this command to validate that a queue is correctly configured to have an unlimited delivery limit, and attempt to create a policy if it is not.
-```
+```bash
rabbitmq-transport queue validate-delivery-limit [options]
```
+> [!NOTE]
+> The credentials used for the management API need [policymaker permissions](https://www.rabbitmq.com/docs/management#permissions) to create the policy, and creating it requires RabbitMQ version 4.0 or above. See [delivery limit validation](connection-settings.md#delivery-limit-validation) for background on why the limit matters.
+
#### Arguments
`queueName` : The name of the queue to validate
#### Options
-`--connectionString` | `-c` : Force this command to use the specified connection string
-
-`--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option
-
-`--managementApiUrl` : Overrides the value inferred from the connection string
-
-`--managementApiUserName` : Overrides the value inferred from the connection string. If provided, the `--managementApiPassword` option must also be provided or this option will be ignored
-
-`--managementApiPassword` : Overrides the value inferred from the connection string. If provided, the `--managementApiUserName` option must also be provided or this option will be ignored
-
-`--disableCertValidation`: The passphrase for the client certificate file when using a client certificate
+This command takes only the [common options](#common-options).
diff --git a/transports/rabbitmq/operations-scripting_content_rabbit_[7,10).partial.md b/transports/rabbitmq/operations-scripting_content_rabbit_[7,10).partial.md
index 984d08aa818..2448fadf1db 100644
--- a/transports/rabbitmq/operations-scripting_content_rabbit_[7,10).partial.md
+++ b/transports/rabbitmq/operations-scripting_content_rabbit_[7,10).partial.md
@@ -2,7 +2,7 @@ In order to provision or de-provision the resources required by an endpoint, the
The tool can be obtained from NuGet and installed using the following command:
-```
+```bash
dotnet tool install -g NServiceBus.Transport.RabbitMQ.CommandLine
```
@@ -18,105 +18,128 @@ Once installed, the `rabbitmq-transport` command line tool will be available for
- [`endpoint create`](#endpoint-create)
- [`queue migrate-to-quorum`](#queue-migrate-to-quorum)
+### Common options
+
+Every command except [`delays verify`](#delays-verify) connects to a broker using a connection string and accepts the following options. `delays verify` talks to the RabbitMQ management API instead, and takes its own options. See [connection settings](connection-settings.md) for the supported connection string formats.
+
+`--connectionString` | `-c` : Force this command to use the specified connection string
+
+`--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option. Default: `RabbitMQTransport_ConnectionString`
+
+`--certPath` : The path to the client certificate file for connecting to the broker
+
+`--certPassphrase` : The passphrase for the client certificate file specified by the `certPath` option
+
+`--useExternalAuth` : Use the external authorization option when connecting to the broker
+
+`--disableCertValidation` : Disable remote certificate validation when connecting to the broker
+
### `delays create`
Use this command to create v2 delay infrastructure queues and exchanges:
-```
+```bash
rabbitmq-transport delays create [options]
```
-#### Options
-
-`--connectionString` | `-c` : Force this command to use the specified connection string
-`--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option
-`--certPath`: The path to the client certificate file for connecting to the broker
-`--certPassphrase`: The passphrase for the client certificate file specified by the `certPath` option
-`--disableCertValidation`: Disable remote certificate validation when connecting to the broker
-`--useExternalAuth`: Use the external authorization option when connecting to the broker
+This command takes only the [common options](#common-options).
### `delays migrate`
Use this command to migrate in-flight delayed messages from the v1 delay infrastructure to the v2 delay infrastructure:
-```
+```bash
rabbitmq-transport delays migrate [options]
```
+Both infrastructures live on the same broker, so this command uses a single connection string.
+
+> [!NOTE]
+> Before running this command, the broker must have the v2 delay infrastructure in place. Use the [`delays create`](#delays-create) command to set it up:
+>
+> ```bash
+> rabbitmq-transport delays create --connectionString "amqp://user:pass@host"
+> ```
+
+Messages that are missing the headers needed to calculate a new delivery time cannot be migrated. The command moves them to a `delays-migrate-poison-messages` queue on the same broker so that they can be inspected and handled separately.
+
#### Options
-`--connectionString` | `-c` : Force this command to use the specified connection string
-`--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option
-`--certPath`: The path to the client certificate file for connecting to the broker
-`--certPassphrase`: The passphrase for the client certificate file specified by the `certPath` option
-`--disableCertValidation`: Disable remote certificate validation when connecting to the broker
-`--useExternalAuth`: Use the external authorization option when connecting to the broker
-`--routingTopology` | `-r` : The routing topology to use
+In addition to the [common options](#common-options):
+
+`--routingTopology` | `-r` : The routing topology to use. Valid values are `Conventional` and `Direct`. Default: `Conventional`
### `delays verify`
Use this command to verify broker requirements for using the v2 delay infrastructure:
-```
+```bash
rabbitmq-transport delays verify [options]
```
+The command checks that the broker is at least version 3.10.0 and that the `stream_queue` and `quorum_queue` feature flags are enabled, then reports either `All checks OK` or the first requirement that was not met. Use it to confirm a broker is suitable before provisioning anything on it.
+
> [!NOTE]
-> This command requires the [RabbitMQ management plugin](https://www.rabbitmq.com/management.html) to be installed on the broker.
+> This command requires the [RabbitMQ management plugin](https://www.rabbitmq.com/docs/management) to be installed on the broker.
#### Options
-`--url` : The URL of the RabbitMQ management API
-`--username` : The username for accessing the RabbitMQ management API
-`--password`: The password for accessing the RabbitMQ management API
+This command does not use a connection string, and all three of its options are required.
+
+`--url` : The URL of the RabbitMQ management API
+
+`--username` : The username for accessing the RabbitMQ management API
+
+`--password` : The password for accessing the RabbitMQ management API
### `endpoint create`
Use this command to create queues and exchanges for an endpoint:
-```
+```bash
rabbitmq-transport endpoint create [options]
```
+> [!NOTE]
+> This command requires the v2 delay infrastructure to already exist on the broker and fails if it does not. Run the [`delays create`](#delays-create) command first.
+
#### Arguments
`endpointName` : The name of the endpoint to create
#### Options
-`--connectionString` | `-c` : Force this command to use the specified connection string
-`--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option
-`--certPath`: Set the path to the client certificate file for connecting to the broker
-`--certPassphrase`: The passphrase for client certificate file for when using a client certificate
-`--disableCertValidation`: Disable remote certificate validation when connecting to the broker
-`--useExternalAuth`: Use the external authorization option when connecting to the broker
-`--routingTopology` | `-r` : Specifies which routing topology to use
-`--useDurableEntities` | `-d` : Specifies if entities should be created as durable
-`--queueType` | `-t` : Specifies queue type will be used for queue creation
-`--errorQueueName`: Also create an error queue with the specified name
-`--auditQueueName`: Also create an audit queue with the specified name
-`--instanceDiscriminators`: An optional list of instance discriminators to use when the endpoint needs uniquely addressable instances
+In addition to the [common options](#common-options):
+
+`--routingTopology` | `-r` : Specifies which [routing topology](routing-topology.md) to use. Valid values are `Conventional` and `Direct`. Default: `Conventional`
+
+`--useDurableEntities` | `-d` : Specifies if entities should be created as durable. Default: `true`
+
+`--queueType` | `-t` : Specifies the [queue type](routing-topology.md#controlling-queue-type) to use for queue creation. Valid values are `Classic` and `Quorum`. Default: `Quorum`
+
+`--errorQueueName` : Also create an error queue with the specified name
+
+`--auditQueueName` : Also create an audit queue with the specified name
+
+`--instanceDiscriminators` : An optional list of instance discriminators to use when the endpoint needs uniquely addressable instances
### `queue migrate-to-quorum`
Use this command to migrate an existing classic queue to a quorum queue.
-```
+```bash
rabbitmq-transport queue migrate-to-quorum [options]
```
> [!NOTE]
> The migration command does not work with queues created by endpoints using the direct routing topology.
+The migration moves the existing messages to a temporary holding queue, recreates the queue as a quorum queue, and then moves the messages back. If the command fails part way through, run it again: it detects the stage the previous run reached and continues from there.
+
#### Arguments
`queueName` : The name of the classic queue to migrate to a quorum queue
#### Options
-`--connectionString` | `-c` : Force this command to use the specified connection string
-`--connectionStringEnv` : Specifies the environment variable where the connection string can be found. `--connectionString`, if specified, will take precedence over this option
-`--certPath`: Set the path to the client certificate file for connecting to the broker
-`--certPassphrase`: The passphrase for client certificate file for when using a client certificate
-`--disableCertValidation`: The passphrase for client certificate file for when using a client certificate
-`--useExternalAuth`: Use the external authorization option when connecting to the broker
+This command takes only the [common options](#common-options).
diff --git a/transports/sql/troubleshooting.md b/transports/sql/troubleshooting.md
index 9e134c7e621..06298e37409 100644
--- a/transports/sql/troubleshooting.md
+++ b/transports/sql/troubleshooting.md
@@ -1,12 +1,15 @@
---
title: SQL Transport Troubleshooting
summary: Tips on what to do when the SQL Transport is not behaving as expected
-component: SQLTransport
-reviewed: 2024-12-19
+component: SqlTransport
+reviewed: 2026-07-31
related:
- transports/sql
+ - transports/upgrades/sqlserver-client4
---
## SqlException: certificate chain not trusted
include: sql-client4
+
+For details on how the transport's connection string is supplied and what else can be set on it, see [connection settings](/transports/sql/connection-settings.md).