RabbitMQ 死信队列与延迟队列实践队列参数x-dead-letter-exchange: main-exchange
x-dead-letter-routing-key: task
x-message-ttl: 5000
Node.js 示例const amqp = require('amqplib');
(async () => {
const conn = await amqp.connect('amqp://localhost');
const ch = await conn.createChannel();
await ch.assertExchange('main-exchange', 'direct', { durable: true });
await ch.assertExchange('delay-exchange', 'direct', { durable: true });
await ch.assertQueue('task', { durable: true });
await ch.bindQueue('task', 'main-exchange', 'task');
await ch.assertQueue('delay.5s', {
durable: true,
arguments: {
'x-dead-letter-exchange': 'main-exchange',
'x-dead-letter-routing-key': 'task',
'x-message-ttl': 5000
}
});
await ch.bindQueue('delay.5s', 'delay-exchange', 'task');
ch.publish('delay-exchange', 'task', Buffer.from('hello'));
})();
备选方案使用每消息过期 `expiration` 实现不同延迟总结通过 TTL+DLX 组合可实现稳定的延迟与重试机制,兼顾可维护性与可靠性。

发表评论 取消回复