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

wordpress 制作app苏州百度seo代理

wordpress 制作app,苏州百度seo代理,做企业的网站的如何推广,企业门户网站的主要论点及写作体会怎么写文章目录 什么是死信交换机#xff1f;死信交换机实现延迟消息的思路实现过程配置类消费者监听死信队列发送延迟消息 注意事项总结 在开发过程中#xff0c;我们常常会遇到需要延迟处理某些消息的场景#xff0c;例如订单的支付超时处理、短信的定时发送等。本文将介绍如何使… 文章目录 什么是死信交换机死信交换机实现延迟消息的思路实现过程配置类消费者监听死信队列发送延迟消息 注意事项总结 在开发过程中我们常常会遇到需要延迟处理某些消息的场景例如订单的支付超时处理、短信的定时发送等。本文将介绍如何使用RabbitMQ的死信交换机Dead Letter ExchangeDLX来实现延迟消息的处理。 什么是死信交换机 死信交换机是一种特殊的交换机用于处理不能被正常消费的消息。当消息在队列中出现以下几种情况时会被转发到死信交换机 消息被拒绝Basic.Reject或Basic.Nack并且requeue参数设置为false。消息在队列中的存活时间超过了TTLTime To Live。队列的最大长度已满导致消息被丢弃。 通过配置死信交换机我们可以将这些“死信”转发到一个特殊的队列从而进行后续处理。 死信交换机实现延迟消息的思路 利用消息的TTL属性和死信交换机我们可以实现延迟消息的处理。具体步骤如下 创建一个普通交换机和队列队列绑定一个死信交换机。发送消息到普通队列并设置消息的TTL。消息过期后会转发到死信交换机死信交换机再将消息路由到实际处理的队列中。 实现过程 配置类 首先我们需要配置普通交换机、队列和绑定关系 package com.itheima.consumer.config;import org.springframework.amqp.core.*; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class NormalConfiguration {Beanpublic DirectExchange normalExchange() {return ExchangeBuilder.directExchange(normal.direct).build();}Beanpublic Queue normalQueue() {return QueueBuilder.durable(normal.queue).deadLetterExchange(dlx.direct).build();}Beanpublic Binding normalExchangeBinding(Queue normalQueue, DirectExchange normalExchange) {return BindingBuilder.bind(normalQueue).to(normalExchange).with(hi);} }在上述配置中我们创建了一个普通交换机normal.direct以及一个普通队列normal.queue并将队列绑定到了死信交换机dlx.direct。 消费者监听死信队列 接下来我们需要定义一个消费者来监听死信队列并处理延迟后的消息 import org.springframework.amqp.rabbit.annotation.QueueBinding; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.annotation.Exchange; import org.springframework.amqp.core.ExchangeTypes; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component;Component public class DlxMessageListener {private static final Logger log LoggerFactory.getLogger(DlxMessageListener.class);RabbitListener(bindings QueueBinding(value Queue(name dlx.queue, durable true),exchange Exchange(name dlx.direct, type ExchangeTypes.DIRECT),key {hi}))public void listenDlxQueue1(String message) {log.info(消费者监听到dlx.queue消息{}, message);} }发送延迟消息 最后我们编写一个测试方法来发送延迟消息 import org.junit.jupiter.api.Test; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;SpringBootTest public class DelayMessageTest {Autowiredprivate RabbitTemplate rabbitTemplate;Testvoid testSendDelayMessage() {rabbitTemplate.convertAndSend(normal.direct, hi, hello, message - {message.getMessageProperties().setExpiration(10000);return message;});} }在上述测试方法中我们向普通队列发送了一条消息并设置其TTL为10000毫秒即10秒。当消息在普通队列中存活超过10秒后会被转发到死信交换机然后由消费者监听并处理。 注意事项 需要注意的是RabbitMQ的消息过期是基于追溯方式来实现的也就是说当一个消息的TTL到期以后不一定会立即被移除或投递到死信交换机而是在消息恰好处于队首时才会被处理。当队列中消息堆积很多的时候过期消息可能不会被按时处理因此你设置的TTL时间不一定准确。 总结 通过以上配置和代码我们实现了使用RabbitMQ死信交换机来处理延迟消息。利用死信交换机的机制我们可以方便地实现各种复杂的消息处理场景提高系统的灵活性和可靠性。
http://www.hkea.cn/news/14475116/

相关文章:

  • 网站备案 信息郑州航空港建设局网站
  • 网站图片的暗纹是怎么做的桥头镇做网站
  • 东平网站制作哪家好网址导航的意思
  • 自己做服务器的网站怎么查网站域名
  • 溧水114网站开发福州市交通建设集团网站
  • 绿色配色的企业网站如何改进网站服务建设和管理
  • 网站官网认证加v怎么做如何做网站充值
  • 南沙区建设局网站网站建设推广哪个好
  • 网站跳出率太高微信小程序怎么做商城
  • 企业网站的规划与建设ppt乐山网站公众号建设
  • 铁岭建设银行网站做暧暧视频网站免费
  • 做一个网站开发项目有哪些阶段怎么查看网页源代码
  • 网站地址跟网页地址区别网页制作的常用技术
  • 网站建设中 敬请期待 源码怎么做通知维护网站
  • 自贡建设监督质量网站好的网站域名
  • 网络做网站如何盈利聚美优品网的网站建设情况
  • 从事网站类网站建设的学网站建设多少钱
  • 武冈网站建设哪家好网址申请域名
  • 短网址网站建设wordpress 列表
  • 网站建设费算不算固定资产广告制作安装工
  • 企业网站案例公司网页设计公司建设网站
  • 南京学做网站龙岗爱联网站建设
  • 做网站一般都需要什么功能少儿编程课网课免费
  • 个人网站备案 内容单位还能建设网站吗
  • 为校园网站建设提供大气手机企业网站
  • 百度竞价托管一月多少钱百度关键词优化软件网站
  • 新余 网站建设网站后台密码破解教程
  • php网站 mysql数据库网络公司排名兴田德润
  • 沈阳模板建站系统企业网站建设 网络服务
  • 织梦旅游网站源码网页制作设计实验总结