Map<String, Object> args = new HashMap<>();
args.put("x-dead-letter-exchange", "dlx.exchange"); // 死信交换机
args.put("x-dead-letter-routing-key", "dlx.routingKey"); // 死信路由键
channel.queueDeclare("normal.queue", true, false, false, args);
1.设置消息TTL:
AMQP.BasicProperties properties = new AMQP.BasicProperties.Builder()
.expiration("10000") // TTL 为 10 秒
.build();
channel.basicPublish("normal.exchange", "normal.routingKey", properties, body);
2.配置死信交换机:
Map<String, Object> args = new HashMap<>();
args.put("x-dead-letter-exchange", "dlx.exchange");
args.put("x-dead-letter-routing-key", "dlx.routingKey");
channel.queueDeclare("normal.queue", true, false, false, args);
3.创建死信队列:
channel.queueDeclare("dlx.queue", true, false, false, null);
channel.queueBind("dlx.queue", "dlx.exchange", "dlx.routingKey");
4.消费者处理延迟消息:
channel.basicConsume("dlx.queue", true, (consumerTag, delivery) -> {
// 处理延迟消息
}, consumerTag -> {});
1.发送订单消息:
AMQP.BasicProperties properties = new AMQP.BasicProperties.Builder()
.expiration("1800000") // TTL 为 30 分钟
.build();
channel.basicPublish("order.exchange", "order.routingKey", properties, body);
2.配置死信交换机:
Map<String, Object> args = new HashMap<>();
args.put("x-dead-letter-exchange", "dlx.exchange");
args.put("x-dead-letter-routing-key", "dlx.routingKey");
channel.queueDeclare("order.queue", true, false, false, args);
3.创建死信队列:
channel.queueDeclare("dlx.queue", true, false, false, null);
channel.queueBind("dlx.queue", "dlx.exchange", "dlx.routingKey");
4.消费者处理超时订单:
channel.basicConsume("dlx.queue", true, (consumerTag, delivery) -> {
// 处理超时订单
String orderId = new String(delivery.getBody(), StandardCharsets.UTF_8);
cancelOrder(orderId); // 取消订单
}, consumerTag -> {});