RabbitMQ Module
RabbitMQ is a reliable and mature messaging and streaming broker, which is easy to deploy on cloud environments, on-premises, and on your local machine. It is currently used by millions worldwide.
Install
npm install @testcontainers/rabbitmq --save-dev
Examples
it("should start, connect and close", async () => {
const rabbitMQContainer = await new RabbitMQContainer().start();
const connection = await amqp.connect(rabbitMQContainer.getAmqpUrl());
await connection.close();
await rabbitMQContainer.stop();
});
it("different username and password", async () => {
const USER = "user";
const PASSWORD = "password";
const rabbitMQContainer = await new RabbitMQContainer()
.withEnvironment({
RABBITMQ_DEFAULT_USER: USER,
RABBITMQ_DEFAULT_PASS: PASSWORD,
})
.start();
const connection = await amqp.connect({
username: USER,
password: PASSWORD,
port: rabbitMQContainer.getMappedPort(5672),
});
await connection.close();
await rabbitMQContainer.stop();
});
it("test publish and subscribe", async () => {
const QUEUE = "test";
const PAYLOAD = "Hello World";
const rabbitMQContainer = await new RabbitMQContainer().start();
const connection = await amqp.connect(rabbitMQContainer.getAmqpUrl());
const channel = await connection.createChannel();
await channel.assertQueue(QUEUE);
channel.sendToQueue(QUEUE, Buffer.from(PAYLOAD));
await new Promise((resolve) => {
channel.consume(QUEUE, (message) => {
expect(message?.content.toString()).toEqual(PAYLOAD);
resolve(true);
});
});
await channel.close();
await connection.close();
await rabbitMQContainer.stop();
}, 10_000);