Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ public string TransportConfigTypeToString(ITransportConfig transportConfig)
return "rabbitmq";
case LearningTransportConfig learningConfig:
return "learning";
case AzureServiceBusTransportConfig azureServiceBusConfig:
return "azure-service-bus";
case AmazonsqsTransportConfig amazonsqsTransportConfig:
return "amazon-sqs";
default:
throw new ApplicationException("Unknown transport type");
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using FluentValidation;

namespace BuslyCLI.Config.Validators;

public class AzureServiceBusTransportConfigValidator : AbstractValidator<AzureServiceBusTransportConfig>
{
public AzureServiceBusTransportConfigValidator()
{
RuleFor(x => x.ConnectionString)
.NotEmpty();
}
}
15 changes: 11 additions & 4 deletions src/BuslyCLI.Console/Config/Validators/TransportConfigValidator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,17 @@ public TransportConfigValidator()

RuleFor(x => x.Config)
.NotEmpty()
.WithMessage("Transport must define exactly one transport configuration.");
.WithMessage("Transport must define exactly one transport configuration.")
.SetInheritanceValidator(v =>
{
v.Add(new LearningTransportConfigValidator());
v.Add(new RabbitMQTransportConfigValidator());
v.Add(new AzureServiceBusTransportConfigValidator());
});

// RuleFor(x => x.LearningTransportConfig)
// .SetValidator(new LearningTransportConfigValidator())
// .When(x => x.Config is not null);

RuleFor(x => x.LearningTransportConfig)
.SetValidator(new LearningTransportConfigValidator())
.When(x => x.Config is not null);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
using BuslyCLI.Config;
using BuslyCLI.Config.Validators;
using FluentValidation.TestHelper;

namespace BuslyCLI.Console.Tests.Config.Validators;

[TestFixture]
public class AzureServiceBusTransportConfigValidatorTests
{
private readonly AzureServiceBusTransportConfigValidator _validator;

public AzureServiceBusTransportConfigValidatorTests()
{
_validator = new AzureServiceBusTransportConfigValidator();
}

[Test]
public async Task ShouldErrorWhenConnectionStringIsNotPassed()
{
// Arrange
var azureServiceBusTransportConfig = new AzureServiceBusTransportConfig
{
ConnectionString = null
};
// Act
var result = await _validator.TestValidateAsync(azureServiceBusTransportConfig);

// Assert
result.ShouldHaveValidationErrorFor(c => c.ConnectionString)
.WithErrorMessage("'Connection String' must not be empty.");
}

[Test]
public async Task ShouldNotErrorStorageDirectoryIsPassed()
{
// Arrange
var azureServiceBusTransportConfig = new AzureServiceBusTransportConfig
{
ConnectionString = "Endpoint=amqp://127.0.0.1:32799/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true"
};
// Act
var result = await _validator.TestValidateAsync(azureServiceBusTransportConfig);

// Assert
result.ShouldNotHaveValidationErrorFor(c => c.ConnectionString);
}
}
45 changes: 45 additions & 0 deletions website/docs/transports/azure-service-bus.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Azure Service Bus

The **Azure Service Bus Transport** is used to communicate to Azure Service Bus.
It is suitable for development, testing, and production environments.

## Configuration

To use the Azure Service Bus Transport, define it under `transports` and reference it as `current-transport`.

### Example

```yaml
current-transport: local-azure-service-bus

transports:
- name: local-azure-service-bus
azure-service-bus-transport-config:
connection-string: Endpoint=amqp://127.0.0.1:32799/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true
```

---

## `azure-service-bus-transport-config` Fields

| Field | Required | Type | Default | Description |
|---------------------|----------|--------|---------|-------------------------------------------------------------------|
| `connection-string` | **Yes** | string | — | Full AMQP connection string used to connect to Azure Service Bus. |

---

## Field Details

### `connection-string` (required)

A standard AMQP URI used to connect to Azure Service Bus.

Examples:

```yaml
amqp-connection-string: Endpoint=sb://[NAMESPACE].servicebus.windows.net/;SharedAccessKeyName=[KEYNAME];SharedAccessKey=[KEY]
```

```yaml
amqp-connection-string: Endpoint=amqp://127.0.0.1:32799/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true
```
29 changes: 1 addition & 28 deletions website/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.