RabbitMQ Dead Letter Exchange

简称DLX

如果一个queue设置了DLX,那么在rabbitmq的管理控制台中的这个queue上就会多个标志,如图:

边上还有DLK,是dead-letter-routing-key的缩写。

队列中的消息,有可能是'dead-lettered',字面意思就是'死信',当下面的这些情况发生时,信就被认为是‘死信’,这些死信会被送至另一个exchange,这个exchange就是DLX:

  1. The message is rejected (basic.reject or basic.nack) with requeue=false;
  2. The TTL for the message expires;
  3. The queue length limit is exceeded.

DLX默认是没有的,有两种方法设置,这里使用代码在声明队列的时候设置:

Queue.declare(
	channel, "myqueue",
	durable: true,
	arguments: [
		# 这里空字符串表示用default exchange,可以设置任意的exchange
		{"x-dead-letter-exchange", :longstr, ""},
		# 如果这个不设置, 默认使用这个消息的routing key
		{"x-dead-letter-routing-key", :longstr, "my.error.message"} 
	]
)

转载于:https://my.oschina.net/u/855913/blog/2987406

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要丢弃 RabbitMQ 中的 Map 集合消息,你可以使用 RabbitMQ 中的 Dead Letter Exchange(DLX)功能。Dead Letter Exchange 是一个交换机,当消息被拒绝或者过期时,它将这些消息重新路由到另一个队列中,以便进行处理。 下面是如何使用 Dead Letter Exchange 丢弃 Map 集合消息的步骤: 1. 创建一个普通的 Exchange 和 Queue,用于接收 Map 集合消息。 2. 为这个 Queue 配置 Dead Letter Exchange,并指定一个 Dead Letter Routing Key。 3. 当 Map 集合消息被拒绝或者过期时,将会被发送到 Dead Letter Exchange,并根据 Dead Letter Routing Key 路由到指定的队列中。 4. 配置这个指定的队列,使其不消费任何消息。 这样,当 Map 集合消息被拒绝或者过期时,它们会被路由到指定的队列中,而这个队列不会消费任何消息,从而达到了丢弃 Map 集合消息的目的。 下面是一个示例代码片段,展示了如何使用 Spring AMQP 来配置 Dead Letter Exchange: ```java @Bean public Queue sourceQueue() { Map<String, Object> args = new HashMap<>(); args.put("x-dead-letter-exchange", "dlx.exchange"); args.put("x-dead-letter-routing-key", "dlx.routing.key"); return new Queue("source.queue", true, false, false, args); } @Bean public Queue dlxQueue() { return new Queue("dlx.queue", true, false, false); } @Bean public DirectExchange dlxExchange() { return new DirectExchange("dlx.exchange"); } @Bean public Binding dlxBinding() { return BindingBuilder.bind(dlxQueue()).to(dlxExchange()).with("dlx.routing.key"); } ``` 在上面的代码中,我们创建了一个名为 "source.queue" 的 Queue,并为其配置了 Dead Letter Exchange("dlx.exchange")和 Dead Letter Routing Key("dlx.routing.key")。同时,我们还创建了一个名为 "dlx.queue" 的队列和一个名为 "dlx.exchange" 的 Direct Exchange,用于接收被丢弃的 Map 集合消息。最后,我们将 "dlx.queue" 绑定到 "dlx.exchange" 上,使用 "dlx.routing.key" 作为 Routing Key。 需要注意的是,这里只是演示了如何使用 Dead Letter Exchange 丢弃 Map 集合消息,具体实现还需要根据你的业务需求来进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值