Pular para o conteúdo
DocumentaçãoExperimente o Aspire
DocumentaçãoExperimente

Set up LavinMQ in the Aspire AppHost

Este conteúdo não está disponível em sua língua ainda.

⭐ Community Toolkit LavinMQ logo

This article is the AppHost API reference for the 📦 CommunityToolkit.Aspire.Hosting.LavinMQ package. Start with Get started with LavinMQ and Aspire for the integration workflow, or see Connect Aspire apps to LavinMQ for client examples.

Terminal
aspire add CommunityToolkit.Aspire.Hosting.LavinMQ

This adds the package to aspire.config.json. After aspire restore, .aspire/modules/aspire.mjs includes addLavinMQ, the persistence APIs, and the exported endpoint properties.

Learn more about aspire add and aspire restore.

apphost.mts
import {
function createBuilder(): IDistributedApplicationBuilder

Creates a new distributed application builder

createBuilder
} from './.aspire/modules/aspire.mjs';
const
const builder: IDistributedApplicationBuilder
builder
= await
function createBuilder(): IDistributedApplicationBuilder

Creates a new distributed application builder

createBuilder
();
const
const lavinmq: LavinMQContainerResource
lavinmq
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addLavinMQ(name: string, options?: {
amqpPort?: number;
managementPort?: number;
}): LavinMQContainerResource (+1 overload)

Adds a LavinMQ container resource to the distributed application builder. Configures the resource with specified parameters and sets up health checks for the resource.

addLavinMQ
('lavinmq');
await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addNodeApp(name: string, appDirectory: string, scriptPath: string): NodeAppResource

Adds a node application to the application model. Node should be available on the PATH.

addNodeApp
('worker', './worker', 'index.js')
.
ExecutableResource.withReference(source: EndpointReference | string | uri, options?: {
connectionName?: string;
optional?: boolean;
name?: string;
} | undefined): NodeAppResource (+1 overload)

Adds a reference to another resource

withReference
(
const lavinmq: LavinMQContainerResource
lavinmq
);
await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.build(): DistributedApplication

Builds the distributed application

build
().
DistributedApplication.run(cancellationToken?: cancellationToken): void

Runs the distributed application

run
();

The integration runs docker.io/cloudamqp/lavinmq:2.1.0. The AMQP endpoint uses container port 5672, and the management endpoint uses 15672. The default username and password are both guest.

Pass fixed host ports when another process needs stable endpoints:

apphost.mts
import {
function createBuilder(): IDistributedApplicationBuilder

Creates a new distributed application builder

createBuilder
} from './.aspire/modules/aspire.mjs';
const
const builder: IDistributedApplicationBuilder
builder
= await
function createBuilder(): IDistributedApplicationBuilder

Creates a new distributed application builder

createBuilder
();
const
const lavinmq: LavinMQContainerResource
lavinmq
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addLavinMQ(name: string, options?: {
amqpPort?: number;
managementPort?: number;
}): LavinMQContainerResource (+1 overload)

Adds a LavinMQ container resource to the distributed application builder. Configures the resource with specified parameters and sets up health checks for the resource.

addLavinMQ
('lavinmq', {
amqpPort?: number | undefined
amqpPort
: 5672,
managementPort?: number | undefined
managementPort
: 15672,
});
await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.build(): DistributedApplication

Builds the distributed application

build
().
DistributedApplication.run(cancellationToken?: cancellationToken): void

Runs the distributed application

run
();

When you omit these parameters, the integration binds host ports 5672 and 15672. Pass alternative values when either port is already occupied.

WithDataVolume and withDataVolume require a volume name and mount it at /var/lib/lavinmq:

apphost.mts
import {
function createBuilder(): IDistributedApplicationBuilder

Creates a new distributed application builder

createBuilder
} from './.aspire/modules/aspire.mjs';
const
const builder: IDistributedApplicationBuilder
builder
= await
function createBuilder(): IDistributedApplicationBuilder

Creates a new distributed application builder

createBuilder
();
const
const lavinmq: LavinMQContainerResource
lavinmq
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addLavinMQ(name: string, options?: {
amqpPort?: number;
managementPort?: number;
}): LavinMQContainerResource (+1 overload)

Adds a LavinMQ container resource to the distributed application builder. Configures the resource with specified parameters and sets up health checks for the resource.

addLavinMQ
('lavinmq');
await
const lavinmq: LavinMQContainerResource
lavinmq
.
LavinMQContainerResource.withDataVolume(name: string, options?: {
isReadOnly?: boolean;
}): LavinMQContainerResource (+1 overload)

Configures a data volume for the LavinMQ container resource by specifying its name and read-only status.

withDataVolume
('lavinmq-data');
await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.build(): DistributedApplication

Builds the distributed application

build
().
DistributedApplication.run(cancellationToken?: cancellationToken): void

Runs the distributed application

run
();

Use a bind mount when you need direct access to broker files on the host:

apphost.mts
import {
function createBuilder(): IDistributedApplicationBuilder

Creates a new distributed application builder

createBuilder
} from './.aspire/modules/aspire.mjs';
const
const builder: IDistributedApplicationBuilder
builder
= await
function createBuilder(): IDistributedApplicationBuilder

Creates a new distributed application builder

createBuilder
();
const
const lavinmq: LavinMQContainerResource
lavinmq
= await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.addLavinMQ(name: string, options?: {
amqpPort?: number;
managementPort?: number;
}): LavinMQContainerResource (+1 overload)

Adds a LavinMQ container resource to the distributed application builder. Configures the resource with specified parameters and sets up health checks for the resource.

addLavinMQ
('lavinmq');
await
const lavinmq: LavinMQContainerResource
lavinmq
.
LavinMQContainerResource.withDataBindMount(source: string, options?: {
isReadOnly?: boolean;
}): LavinMQContainerResource (+1 overload)

Configures a bind mount for the LavinMQ container resource to allow data persistence. The method mounts a specified source path on the host to the container's data directory.

withDataBindMount
('./lavinmq-data');
await
const builder: IDistributedApplicationBuilder
builder
.
IDistributedApplicationBuilder.build(): DistributedApplication

Builds the distributed application

build
().
DistributedApplication.run(cancellationToken?: cancellationToken): void

Runs the distributed application

run
();

Both persistence methods accept an optional isReadOnly value. A read-only mount isn’t suitable for a broker that needs to write data.

The resource exports its AMQP endpoint and connection expressions for use in custom AppHost expressions:

apphost.mts
import { createBuilder } from './.aspire/modules/aspire.mjs';
const builder = await createBuilder();
const lavinmq = await builder.addLavinMQ('lavinmq');
const primaryEndpoint = await lavinmq.primaryEndpoint();
const host = await lavinmq.host();
const port = await lavinmq.port();
const uri = await lavinmq.uriExpression();
const connectionString = await lavinmq.connectionStringExpression();
await builder.build().run();

The management endpoint is added automatically. Open the management HTTP endpoint from the Aspire dashboard, then sign in with the broker credentials.

The hosting integration registers a RabbitMQ-compatible health check against the AMQP endpoint. The dashboard reports the resource healthy after a client connection succeeds.