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

上海建设安全协会网站3000ok新开传奇网站

上海建设安全协会网站,3000ok新开传奇网站,wordpress微信公众号关注登陆,智慧团建登录口13.延迟消息 延迟消息#xff1a;生产者发送消息时指定一个时间#xff0c;消费者不会立刻收到消息#xff0c;而是在指定时间之后才会收到消息 延迟任务#xff1a;一定时间之后才会执行的任务 1.死信交换机 当一个队列中的某条消息满足下列情况之一时#xff0c;就会…13.延迟消息 延迟消息生产者发送消息时指定一个时间消费者不会立刻收到消息而是在指定时间之后才会收到消息 延迟任务一定时间之后才会执行的任务 1.死信交换机 当一个队列中的某条消息满足下列情况之一时就会成为死信dead letter 消费者使用 basic.reject 或 basic.nack 声明消费失败并且消息的 requeue 参数设置为 false 过期消息达到了队列或消息本身设置的过期时间消息超时后无人消费 要投递的队列消息堆积满了最早的消息可能成为死信 如果队列通过 dead-letter-exchange 属性指定了一个交换机那么该队列中的死信就会投递到这个交换机中这个交换机称为死信交换机Dead Letter Exchange简称DLX 利用死信交换机的特点可以实现发送延迟消息的功能 2.延迟消息插件推荐使用 1.下载并安装延迟插件 RabbitMQ 的官方推出了一个插件原生支持延迟消息功能。该插件的原理是设计了一种支持延迟消息功能的交换机当消息投递到交换机后可以将消息暂存一段时间时间到了之后再将消息投递到队列中 插件的下载地址rabbitmq-delayed-message-exchange 下载完插件后运行以下指令在输出信息中找到 Mounts 再找到 RabbitMQ 的插件的安装目 sudo docker inspect rabbitmq然后进入 RabbitMQ 的插件的安装目录将刚才下载的插件上传到该目录下 sudo chmod rx -R /var/lib/docker//接着打开/var/lib/docker/volumes/rabbitmq-plugins/_data目录的写权限如果修改权限不生效请切换到 root 用户执行指令 sudo chmod 777 /var/lib/docker/volumes/rabbitmq-plugins/_data//将刚才下载的插件上传到/var/lib/docker/volumes/rabbitmq-plugins/_data目录 //上传成功后将/var/lib/docker/volumes/rabbitmq-plugins/_data目录的权限复原 sudo chmod 755 /var/lib/docker/volumes/rabbitmq-plugins/_data//最后进入容器内部运行指令安装插件安装完成后退出容器内部 sudo docker exec -it rabbitmq bash rabbitmq-plugins enable rabbitmq_delayed_message_exchange exit看到以下信息说明插件安装成功了 2.在 Java 代码中发送延迟消息 声明延迟交换机 Bean public DirectExchange delayExchange() {return ExchangeBuilder.directExchange(delay.direct).delayed().build(); } 声明队列和延迟交换机并将队列和延迟交换机绑定在一起 RabbitListener(bindings QueueBinding(value Queue(name delay.queue),exchange Exchange(name delay.direct, delayed true, type ExchangeTypes.DIRECT),key delay )) public void listenDelayQueue(String message) {SimpleDateFormat simpleDateFormat new SimpleDateFormat();simpleDateFormat.applyPattern(yyyy-MM-dd HH:mm:ss SSS);System.out.println(消费者收到了 delay.queue的消息: message 时间 simpleDateFormat.format(System.currentTimeMillis())); } 编写测试方法测试发送延迟消息 Test void testSendDelayMessage() {rabbitTemplate.convertAndSend(delay.direct, delay, Hello, DelayQueue!, new MessagePostProcessor() {Overridepublic Message postProcessMessage(Message message) throws AmqpException {message.getMessageProperties().setDelay(10000); // 毫秒return message;}});SimpleDateFormat simpleDateFormat new SimpleDateFormat();simpleDateFormat.applyPattern(yyyy-MM-dd HH:mm:ss SSS);System.out.println(发送消息成功发送时间 simpleDateFormat.format(System.currentTimeMillis())); } 发送延迟消息的本质是在消息头属性中添加 x-delay 属性 3. 延迟消息的原理和缺点 RabbitMQ 的延迟消息是怎么实现的呢RabbitMQ 会自动维护一个时钟这个时钟每隔一秒就跳动一次如果对时钟的精度要求比较高的可能还要精确到毫秒甚至纳秒 RabbitMQ 会为发送到交换机的每一条延迟消息创建一个时钟时钟运行的过程中需要 CPU 不断地进行计算。发送到交换机的延迟消息数越多RabbitMQ 需要维护的时钟就越多对 CPU 的占用率就越高Spring 提供的定时任务的原理也是类似 定时任务属于 CPU 密集型任务中间涉及到的计算过程对 CPU 来说压力是很大的所以说采用延迟消息会给服务器的 CPU 带来更大的压力。当交换机中有非常多的延迟消息时对 CPU 的压力就会特别大 4.取消超时订单 设置 30 分钟后检测订单支付状态实现起来非常简单但是存在两个问题 如果并发较高30分钟可能堆积消息过多对 MQ 压力很大大多数订单在下单后 1 分钟内就会支付但消息需要在 MQ 中等待30分钟浪费资源 5.发送延迟检测订单的消息 我们定义一个实体类用于记录延迟消息的内容和延迟消息的延迟时间列表该实体类也是延迟消息的类型 import java.util.ArrayList; import java.util.Arrays; import java.util.List;public class MultipleDelayMessageT {private T data;private ListLong delayMillis;public MultipleDelayMessage() {}public MultipleDelayMessage(T data, Long... delayMillis) {this.data data;this.delayMillis new ArrayList(Arrays.asList(delayMillis));}public MultipleDelayMessage(T data, ListLong delayMillis) {this.data data;this.delayMillis delayMillis;}public static T MultipleDelayMessageT of(T data, Long... delayMillis) {return new MultipleDelayMessage(data, new ArrayList(Arrays.asList(delayMillis)));}public static T MultipleDelayMessageT of(T data, ListLong delayMillis) {return new MultipleDelayMessage(data, delayMillis);}public boolean hasNextDelay() {return !delayMillis.isEmpty();}public Long removeNextDelay() {return delayMillis.remove(0);}public T getData() {return data;}public void setData(T data) {this.data data;}public ListLong getDelayMillis() {return delayMillis;}public void setDelayMillis(ListLong delayMillis) {this.delayMillis delayMillis;}Overridepublic String toString() {return MultipleDelayMessage{ data data , delayMillis delayMillis };}} 我们再定义一个发送延迟消息的消息处理器供所有服务使用 import org.springframework.amqp.AmqpException; import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessagePostProcessor;public class DelayMessagePostProcessor implements MessagePostProcessor {private final Integer delay;public DelayMessagePostProcessor(Integer delay) {this.delay delay;}Overridepublic Message postProcessMessage(Message message) throws AmqpException {message.getMessageProperties().setDelay(delay);return message;}} 改造后的发送延迟消息的测试方法 “delay.direct”交换机的名称 “delay”路由键routing key交换机会将消息发送到绑定到这个路由键的队列 “Hello, DelayQueue!”实际要发送的消息内容 new DelayMessagePostProcessor(10000)消息后处理器Message Post Processor用于在消息发送之前对消息进行修改 Test void testSendDelayMessage() {rabbitTemplate.convertAndSend(delay.direct, delay, Hello, DelayQueue!, new DelayMessagePostProcessor(10000));SimpleDateFormat simpleDateFormat new SimpleDateFormat();simpleDateFormat.applyPattern(yyyy-MM-dd HH:mm:ss SSS);System.out.println(发送消息成功发送时间 simpleDateFormat.format(System.currentTimeMillis())); }
文章转载自:
http://www.morning.drbwh.cn.gov.cn.drbwh.cn
http://www.morning.xhlpn.cn.gov.cn.xhlpn.cn
http://www.morning.skbhl.cn.gov.cn.skbhl.cn
http://www.morning.xmhpq.cn.gov.cn.xmhpq.cn
http://www.morning.fyglr.cn.gov.cn.fyglr.cn
http://www.morning.pghfy.cn.gov.cn.pghfy.cn
http://www.morning.llqch.cn.gov.cn.llqch.cn
http://www.morning.fdfsh.cn.gov.cn.fdfsh.cn
http://www.morning.kjawz.cn.gov.cn.kjawz.cn
http://www.morning.qczpf.cn.gov.cn.qczpf.cn
http://www.morning.ldpjm.cn.gov.cn.ldpjm.cn
http://www.morning.qcnk.cn.gov.cn.qcnk.cn
http://www.morning.lftpl.cn.gov.cn.lftpl.cn
http://www.morning.hrrmb.cn.gov.cn.hrrmb.cn
http://www.morning.zqfjn.cn.gov.cn.zqfjn.cn
http://www.morning.tnfyj.cn.gov.cn.tnfyj.cn
http://www.morning.bwznl.cn.gov.cn.bwznl.cn
http://www.morning.jkdtz.cn.gov.cn.jkdtz.cn
http://www.morning.ogzjf.cn.gov.cn.ogzjf.cn
http://www.morning.ktmnq.cn.gov.cn.ktmnq.cn
http://www.morning.pqkrh.cn.gov.cn.pqkrh.cn
http://www.morning.wjlbb.cn.gov.cn.wjlbb.cn
http://www.morning.lekbiao.com.gov.cn.lekbiao.com
http://www.morning.zxcny.cn.gov.cn.zxcny.cn
http://www.morning.syssdz.cn.gov.cn.syssdz.cn
http://www.morning.kjlhb.cn.gov.cn.kjlhb.cn
http://www.morning.cjcry.cn.gov.cn.cjcry.cn
http://www.morning.swzpx.cn.gov.cn.swzpx.cn
http://www.morning.kyytt.cn.gov.cn.kyytt.cn
http://www.morning.rnmyw.cn.gov.cn.rnmyw.cn
http://www.morning.huarma.com.gov.cn.huarma.com
http://www.morning.rxsgk.cn.gov.cn.rxsgk.cn
http://www.morning.mfsjn.cn.gov.cn.mfsjn.cn
http://www.morning.brwei.com.gov.cn.brwei.com
http://www.morning.shuanga.com.cn.gov.cn.shuanga.com.cn
http://www.morning.fldrg.cn.gov.cn.fldrg.cn
http://www.morning.hmgqy.cn.gov.cn.hmgqy.cn
http://www.morning.hwhnx.cn.gov.cn.hwhnx.cn
http://www.morning.msfqt.cn.gov.cn.msfqt.cn
http://www.morning.tdgwg.cn.gov.cn.tdgwg.cn
http://www.morning.fpxsd.cn.gov.cn.fpxsd.cn
http://www.morning.psgbk.cn.gov.cn.psgbk.cn
http://www.morning.syssdz.cn.gov.cn.syssdz.cn
http://www.morning.cryb.cn.gov.cn.cryb.cn
http://www.morning.qsy39.cn.gov.cn.qsy39.cn
http://www.morning.mlgsc.com.gov.cn.mlgsc.com
http://www.morning.ryspp.cn.gov.cn.ryspp.cn
http://www.morning.jqzns.cn.gov.cn.jqzns.cn
http://www.morning.cnwpb.cn.gov.cn.cnwpb.cn
http://www.morning.stprd.cn.gov.cn.stprd.cn
http://www.morning.kghss.cn.gov.cn.kghss.cn
http://www.morning.ysskn.cn.gov.cn.ysskn.cn
http://www.morning.ey3h2d.cn.gov.cn.ey3h2d.cn
http://www.morning.gtcym.cn.gov.cn.gtcym.cn
http://www.morning.cbchz.cn.gov.cn.cbchz.cn
http://www.morning.rmdwp.cn.gov.cn.rmdwp.cn
http://www.morning.wjjsg.cn.gov.cn.wjjsg.cn
http://www.morning.dwztj.cn.gov.cn.dwztj.cn
http://www.morning.kndst.cn.gov.cn.kndst.cn
http://www.morning.webpapua.com.gov.cn.webpapua.com
http://www.morning.lwtfr.cn.gov.cn.lwtfr.cn
http://www.morning.xphls.cn.gov.cn.xphls.cn
http://www.morning.lmqfq.cn.gov.cn.lmqfq.cn
http://www.morning.gsqw.cn.gov.cn.gsqw.cn
http://www.morning.kkdbz.cn.gov.cn.kkdbz.cn
http://www.morning.yxwnn.cn.gov.cn.yxwnn.cn
http://www.morning.ycwym.cn.gov.cn.ycwym.cn
http://www.morning.xxgfl.cn.gov.cn.xxgfl.cn
http://www.morning.pjxw.cn.gov.cn.pjxw.cn
http://www.morning.rdlfk.cn.gov.cn.rdlfk.cn
http://www.morning.gl-group.cn.gov.cn.gl-group.cn
http://www.morning.pqnps.cn.gov.cn.pqnps.cn
http://www.morning.wsgyq.cn.gov.cn.wsgyq.cn
http://www.morning.xnnpy.cn.gov.cn.xnnpy.cn
http://www.morning.xnqwk.cn.gov.cn.xnqwk.cn
http://www.morning.tjmfz.cn.gov.cn.tjmfz.cn
http://www.morning.gjwkl.cn.gov.cn.gjwkl.cn
http://www.morning.ywgrr.cn.gov.cn.ywgrr.cn
http://www.morning.bhrbr.cn.gov.cn.bhrbr.cn
http://www.morning.wnzgm.cn.gov.cn.wnzgm.cn
http://www.tj-hxxt.cn/news/276681.html

相关文章:

  • 河南新乡做网站公司哪家好新能源网站开发
  • 天天炫拍免费做相册管方网站下载wordpress 调试插件下载
  • 可以找人帮忙做设计的网站赣州网站建设较好的公司
  • 深圳网站建设制作品牌公司公司网建设单位
  • 电商平台网站定制怎样设计网站版面
  • 网站建设的主要特征巩义网站建设定制
  • html网站设计实例代码广东珠海网站建设
  • 电子商务网站建设与管理的实验报告制作网站的免费软件
  • 沧州制作网站网站常见程序问题
  • 大型网站开发视频wordpress 对接酷q
  • 青岛网站营销推广设计新颖的网站建站
  • 昆山便宜做网站郑州妇科医院排行
  • wordpress页面不要菜单seo实战密码第三版pdf
  • 网站建设公司 选中企动力公司做网站建设有哪些公司
  • 网站制作需要平台佛山免费建站平台
  • 建设网站和备案中国十大热门网站
  • 思乐网站建设北京设计院排名100强
  • 男人和女人做不可描述的事情的网站站酷网页
  • 十大免费ppt网站下载自学网站建设视频
  • 做护肤品好的网站wordpress注册失败
  • 标准百度网站建设网站实名认证资料
  • 优化网站改版京东联盟网站建设电脑版
  • 备案 个人网站网站更改模板 seo
  • 台州建设监理协会网站有教做鱼骨图的网站吗
  • 做网站的优惠广告linux做网站服务器吗
  • 浙江网站建设哪家最好国内机械加工企业排名
  • 网站空间期限查询wordpress 的速度
  • 网站里面添加支付怎么做wordpress外贸网站建设
  • 交换链接适用于哪些网站哪些企业用wordpress建站
  • 做网站好用的cms教育机构网址