Skip to content

Instantly share code, notes, and snippets.

@kzhen
Created May 29, 2025 18:32
Show Gist options
  • Select an option

  • Save kzhen/043e41ad5c11b8ccc275292737772821 to your computer and use it in GitHub Desktop.

Select an option

Save kzhen/043e41ad5c11b8ccc275292737772821 to your computer and use it in GitHub Desktop.
Dotnet Aspire - Custom format for RabbitMQ connection strings
var builder = DistributedApplication.CreateBuilder(args);
var rabbitMQUserName = builder.AddParameter("rabbitMQUserName");
var rabbitMQPassword = builder.AddParameter("rabbitMQPassword");
var rabbitMq = builder.AddRabbitMQ("rabbitmq", rabbitMQUserName, rabbitMQPassword, 5673)
.WithManagementPlugin(port: 15673);
var endpoint = rabbitMq.GetEndpoint("tcp");
builder.AddProject<Projects.Web>("web")
.WithEnvironment("ConnectionStrings__RabbitMQ", BuildRabbitMQConnectionString(endpoint, rabbitMQUserName, rabbitMQPassword))
.WaitFor(rabbitMq);
builder.Build().Run();
static ReferenceExpression BuildRabbitMQConnectionString(
EndpointReference endpoint, IResourceBuilder<ParameterResource> rabbitMQUserName, IResourceBuilder<ParameterResource> rabbitMQPassword)
{
var host = endpoint.Property(EndpointProperty.IPV4Host);
var port = endpoint.Property(EndpointProperty.Port);
var userName = rabbitMQUserName.Resource;
var pwd = rabbitMQPassword.Resource;
return ReferenceExpression.Create(
$"host={host};port={port};virtualhost=/;username={userName};password={pwd};");
}
@davidfowl
Copy link

Looks pretty good. You can replace rabbitMq.GetEndpoint("tcp") with rabbitMq.Resource.PrimaryEndpoint

@davidfowl
Copy link

var builder = DistributedApplication.CreateBuilder(args);

var rabbitMQUserName = builder.AddParameter("rabbitMQUserName");
var rabbitMQPassword = builder.AddParameter("rabbitMQPassword");
var rabbitMq = builder.AddRabbitMQ("rabbitmq", rabbitMQUserName, rabbitMQPassword, 5673)
	.WithManagementPlugin(port: 15673);

var endpoint = rabbitMq.Resource.PrimaryEndpoint;

builder.AddProject<Projects.Web>("web")
	.WithEnvironment("ConnectionStrings__RabbitMQ", BuildRabbitMQConnectionString(endpoint, rabbitMQUserName, rabbitMQPassword))
	.WaitFor(rabbitMq);

builder.Build().Run();

static ReferenceExpression BuildRabbitMQConnectionString(
	EndpointReference endpoint, IResourceBuilder<ParameterResource> rabbitMQUserName, IResourceBuilder<ParameterResource> rabbitMQPassword)
{
	var host = endpoint.Property(EndpointProperty.IPV4Host);
	var port = endpoint.Property(EndpointProperty.Port);

	return ReferenceExpression.Create(
		$"host={host};port={port};virtualhost=/;username={rabbitMQUserName};password={rabbitMQPassword};");
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment