当前位置: 首页 > wzjs >正文

网页制作专业信息小红书关键词排名优化

网页制作专业信息,小红书关键词排名优化,世界交互设计最好的前10大学,温州网站定制哪家好1.死信交换机(Dead Letter Exchange DLX) 1.1什么是死信交换机 ? 死信: 在RabbitMQ中,无法被消费者正常处理的消息称为死信(Dead Letter)。死信交换机: 用于接收死信的交换机。当消息成为死信时,RabbitMQ会将其重新路…

1.死信交换机(Dead Letter Exchange DLX)

1.1什么是死信交换机 ?

  • 死信: 在RabbitMQ中,无法被消费者正常处理的消息称为死信(Dead Letter)。
  • 死信交换机: 用于接收死信的交换机。当消息成为死信时,RabbitMQ会将其重新路由到死信交换机,再由死信交换机根据绑定规则路由到死信队列。

1.2消息成为死信的条件

  • 1.消息被拒绝:消费者调用basic.reject或basic.nack 并设置了requeue=false。
  • 2.消息过期:消息在队列中的存活时间(TTL)到期
  • 3.队列达到最大长度:队列已满,无法再接收新消息。

1.3死信交换机的配置

  • 在声明队列时,通过参数指定死信交换机和路由键
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.4死信交换机的应用场景

  • 异常消息处理:将处理失败的消息转移到死信交换机,便于后续分析或人工处理。
  • 延迟队列:通过死信交换机+TTL实现延迟队列功能。

2.延迟队列

2.1什么是延迟队列?

  • 延迟队列:消息在发送到队列后,不会立即被消费,而是延迟一段时间后被消费者处理。
  • 实现方式:RabbitMQ本身不支持直接的延迟队列功能,但可以通过死信交换机+TTL实现。

2.2延迟队列的实现

1.设置消息TTL:

  • 发送消息时设置消息的TTL(Time-To-Live)。
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 -> {});

2.3延迟队列的应用场景

  • 超时订单取消:用户下单后,如果30min内未支付,则自动取消订单。
  • 定时任务:在指定时间后执行任务,如发送提醒邮件。
  • 重试机制:消息处理失败后,延迟一段时间再重试。

3.示例:

3.1实现订单超时取消

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 -> {});

4.总结

  • 死信交换机:用于处理无法被正常消费的消息,常用于异常消息的处理和延迟队列
  • 延迟队列:通过死信交换机+TTL实现,适用于订单超时取消、定时任务、重试机制等场景。
  • 应用场景
    • 死信交换机异常消息处理、延迟队列
    • 延迟队列订单超时取消、定时任务、重试机制
http://www.dtcms.com/wzjs/485706.html

相关文章:

  • flask做的网站 网址信息流广告投放公司
  • 有没有帮忙做网站的口碑营销的步骤
  • 淘宝网站制作培训成人短期培训学校
  • 天津市建设交通委网站网站开发的流程
  • 软件开发就业前景如何巩义网站优化公司
  • 建设门户网站费用网站关键词如何快速上首页
  • 星子网络公司seo优化网站排名
  • 小程序代码win7优化大师好不好
  • 网站开发设计流程论文如何做友情链接
  • 做网站注册商标网站服务器信息查询
  • 网站详情页用哪个软件做网站seo收录工具
  • 郑州正规网站设计价格河北seo公司
  • 旅游网站的建设的文献综述淘宝客seo推广教程
  • 静态网站建设要学什么重庆百度快照优化排名
  • 如何做国际网站产品宣传百度公司招聘官网最新招聘
  • 厦门seo网站推广优化怎么让关键词快速排名首页
  • 深圳市宝安区松岗seo兼职
  • 求助如何做网站推广台州网站建设方案推广
  • 长沙门户网站建设1688黄页大全进口
  • 万虹点读机如何做系统下载网站必应搜索引擎入口
  • 深圳做网站哪个公司好人民日报新闻消息
  • 建设购物网站的方案陕西疫情最新消息
  • 室内装修公司需要资质吗优化营商环境存在问题及整改措施
  • ppt模板下载素材网站优化什么
  • html5 制作手机网站seo是指什么职位
  • 怎么做网站设计方案北京seo包年
  • 手机网站开发制作上海好的seo公司
  • 深圳专业网站建设制作价格低广州网站建设系统
  • 德国诺莫斯手表网站淘宝指数在哪里查询
  • 企业网站哪家做的好在线推广企业网站的方法