Skip to content

Commit 4adf910

Browse files
saby1101claude
andcommitted
feat: make RabbitMQ exchange/queue setup optional and add 5min TTL to queues
Add ensureExchangesAndQueues option (default false) to control whether exchanges and queues are declared on startup. Add x-message-ttl of 5 minutes to the main queue and DLQ. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent a8e4364 commit 4adf910

3 files changed

Lines changed: 6 additions & 1 deletion

File tree

‎src/event-bus/interfaces.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export interface EventBusOptions {
1111
}[];
1212
validateMsg: (event: string, payload: any, req?: FastifyRequest) => void;
1313
processError(err: any, ctx: ActionContext): { err: any; status: number };
14+
ensureExchangesAndQueues?: boolean;
1415
disableEventPublishRoute?: boolean;
1516
actionConcurrency?: number;
1617
registry?: Registry;

‎src/event-bus/rabbitmq-utils.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export async function ensureRabbitMqExchangesAndQueues(
2828
await connection.queueDeclare({
2929
queue: `${prefix}.queue.${service}`,
3030
arguments: {
31+
"x-message-ttl": 300000, // 5 minutes
3132
"x-dead-letter-exchange": `${prefix}.retry-exchange.${service}`,
3233
"x-dead-letter-routing-key": "retry", // Fixed routing key for DLX
3334
"x-queue-type": "classic",
@@ -72,6 +73,7 @@ export async function ensureRabbitMqExchangesAndQueues(
7273
await connection.queueDeclare({
7374
queue: `${prefix}.dlq.${service}`,
7475
arguments: {
76+
"x-message-ttl": 300000, // 5 minutes
7577
"x-queue-type": "classic",
7678
},
7779
autoDelete: false,

‎src/event-bus/rabbitmq.ts‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ const plugin: FastifyPluginAsync<EventBusOptions> = async function (
4848
}
4949
const connection = new Connection(process.env.RABBITMQ_URL);
5050
const service = process.env.K_SERVICE;
51-
await ensureRabbitMqExchangesAndQueues(connection, service);
51+
if (options.ensureExchangesAndQueues) {
52+
await ensureRabbitMqExchangesAndQueues(connection, service);
53+
}
5254

5355
const publisher = connection.createPublisher({ maxAttempts: 3 });
5456

0 commit comments

Comments
 (0)