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

新闻专业为啥学网页制作搜索引擎优化好做吗

新闻专业为啥学网页制作,搜索引擎优化好做吗,网站防盗链设置,wordpress 在线音乐播放器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/259340.html

相关文章:

  • 网站开发背景意义免费开发软件制作平台
  • 网上订货发货网站建设免费大数据查询
  • 北京网站营销与推广乐陵seo外包公司
  • 商城网站建设是什么关键词排名查询
  • 怎样做网站首页图片变换网站seo具体怎么做?
  • 重庆彼客的网站是谁家做的2345网址导航浏览器下载
  • 郑州网站建设商城定制上海疫情突然消失的原因
  • 网站平台设计团队百度天眼查公司
  • 深圳企业网站建设费用百度大数据查询怎么用
  • 淄博专业做网站长沙网站建设服务
  • 自己做网站还有出路吗有免费推广平台
  • 东莞南城网站制作公司腾讯企业qq官网
  • 优化步骤百度关键词优化技巧
  • 网站举报入口郑州网络推广代理顾问
  • 店群智能营销管理系统seo自媒体运营技巧
  • 便宜的广州网站建设服务新闻头条今天最新消息
  • 广东深广东深圳网站建设服务宁德网站建设制作
  • 京东网站建设的经费预算深圳 网站制作
  • 发布个人免费网站的一般流程图网站免费制作
  • 国内设计网站公司口碑营销策划方案
  • 注册小程序账号上海seo外包公司
  • 政务网站建设方案百度搜索热度查询
  • 智慧团建系统官方网站seo搜索优化网站推广排名
  • wordpress英文垃圾评论seo关键词排名优化哪家好
  • 淄博政府做网站哪家好360地图下载最新版
  • 石家庄校园兼职网站建设惠州seo关键字优化
  • 歪咪小麻花官方网站怎么做零售万物识别扫一扫
  • 湖南营销网站建设联系方式重庆网站seo费用
  • 龙岗网站推广图床外链生成工具
  • 科技局网站查新怎么做百度网页电脑版入口