Azure Service Bus Emulator
Install
| npm install @testcontainers/azureservicebus --save-dev
|
Examples
These examples use the following libraries:
Choose an image from the container registry and substitute IMAGE.
Send/receive queue messages
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | await using container = await new ServiceBusContainer(IMAGE).acceptLicense().start();
const client = new ServiceBusClient(container.getConnectionString());
const sender = client.createSender("queue.1");
const receiver = client.createReceiver("queue.1");
await sender.sendMessages({ body: "Hello, World!" });
const res = await receiver.receiveMessages(1, { maxWaitTimeInMs: 5_000 });
expect(res).toHaveLength(1);
expect(res[0].body).toBe("Hello, World!");
await receiver.close();
await sender.close();
await client.close();
|
Customize queues/topics
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 | const queueName = "custom-queue";
const config = JSON.stringify({
UserConfig: {
Namespaces: [
{
Name: "sbemulatorns",
Queues: [
{
Name: queueName,
Properties: {
DeadLetteringOnMessageExpiration: false,
DefaultMessageTimeToLive: "PT1H",
DuplicateDetectionHistoryTimeWindow: "PT20S",
ForwardDeadLetteredMessagesTo: "",
ForwardTo: "",
LockDuration: "PT1M",
MaxDeliveryCount: 3,
RequiresDuplicateDetection: false,
RequiresSession: false,
},
},
],
Topics: [],
},
],
Logging: {
Type: "File",
},
},
});
await using container = await new ServiceBusContainer(IMAGE).acceptLicense().withConfig(config).start();
const client = new ServiceBusClient(container.getConnectionString());
const sender = client.createSender(queueName);
const receiver = client.createReceiver(queueName);
|
Customize the MS SQL container
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | // You are responsible for configuring the SA password on
// BOTH containers when using a custom MSSQL container.
const customPassword = "MyC0mplexP@ssw0rd!";
// @testcontainers/mssqlserver can be used as well
const mssqlContainer = new GenericContainer("mcr.microsoft.com/mssql/server:2022-latest")
.withEnvironment({
ACCEPT_EULA: "Y",
MSSQL_SA_PASSWORD: customPassword,
})
.withNetworkAliases("your-network-alias")
.withWaitStrategy(Wait.forLogMessage(/.*Recovery is complete.*/, 1).withStartupTimeout(120_000));
await using container = await new ServiceBusContainer(IMAGE)
.acceptLicense()
.withMssqlContainer(mssqlContainer)
.withMssqlPassword(customPassword)
.start();
const client = new ServiceBusClient(container.getConnectionString());
|